home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / basic / qbware.exe / DEMO.BAS < prev    next >
Encoding:
BASIC Source File  |  1988-04-02  |  65.7 KB  |  2,546 lines

  1. '
  2. '   Demo.Bas
  3. '
  4. '*****************************************************************************
  5.  
  6. 'Copyright (c) 1987, 1988 Marcel Madonna
  7.  
  8. 'DEMO.BAS shows the use of many of the windowing routines available
  9. '  with QBWARE.
  10. '
  11. ' ********************* N O T E *************************
  12. '
  13. 'This program cannot be used from the DOS prompt without Microsoft
  14. 'QuickBasic V4.0 and a registered copy of QBWARE.
  15. '
  16. 'To compile it, at the DOS prompt type:
  17.  
  18. '               bc demo;
  19. '               link /ex /noe demo,,,brun40 qbware;
  20. '               del demo.obj
  21. '               del demo.map
  22.  
  23. 'To run it from the QuickBasic development environment, type:
  24. '
  25. '               qb demo /l qbware
  26. '               [Shift] + F5
  27.  
  28. 'To execute demo just type "demo" followed by a file specification at the
  29. 'DOS prompt'
  30. '*****************************************************************************
  31.  
  32. DECLARE SUB DosPLst (BYVAL addr%, Rc%)
  33. 'Window handles
  34.  
  35. '       12 - Selection menus
  36. '       13 - Formatted text displays
  37. '       14 - Bar Menus
  38. '       15 - Miscellaneous unformatted text
  39.  
  40.     OPTION BASE 1
  41.  
  42.     CLS
  43.     LOCATE 1, 1
  44.  
  45.  
  46. ' We'll check here for the old IBM CGA adapter cards that cause snow
  47.  
  48.     PRINT "Before we get started, I'd like to run a little test."
  49.     PRINT "I will access your video memory for a couple of seconds."
  50.     PRINT " "
  51.     PRINT "Press any key to continue"
  52.     x$ = ""
  53.     WHILE x$ = ""
  54.         x$ = INKEY$
  55.     WEND
  56.  
  57.     Snow% = 1
  58.     Text$ = SPACE$(2000)
  59.     Row% = 1: Col% = 1: Fg% = 0: Bg% = 0
  60.     FOR x% = 1 TO 100
  61.         CALL Putline(Snow%, Text$, Row%, Col%, Fg%, Bg%)
  62.     NEXT
  63.     Text$ = ""
  64.  
  65.     PRINT "Did you see any snow or distortion on the screen?"
  66.     PRINT "Please answer Y or N."
  67.  
  68. AnsLoop:
  69.     x$ = ""
  70.     WHILE x$ = ""
  71.         x$ = INKEY$
  72.     WEND
  73.     IF x$ = "y" OR x$ = "Y" THEN
  74.         Snow% = 0
  75.         PRINT "I will synchronize video output with horizontal retrace."
  76.         PRINT "This should eliminate the snow but it will slow down the"
  77.         PRINT "program a bit."
  78.         PRINT " "
  79.         PRINT "Press any key to continue"
  80.         x$ = ""
  81.         WHILE x$ = ""
  82.             x$ = INKEY$
  83.         WEND
  84.     ELSEIF x$ <> "n" AND x$ <> "N" THEN
  85.         GOTO AnsLoop
  86.     END IF
  87.  
  88. ' Dim arrays for QB Syntax check only - we REDIM them later
  89.  
  90.  
  91.     x% = 1
  92.     DIM Text$(x%), MenuText$(x%), Location%(x%, 2), TColors%(x%, 2), TLength%(x%)
  93.     DIM TblData$(x%), TblSlct%(x%), SText$(x%)
  94.  
  95.  
  96. ' Set up housekeeping for window drivers
  97.  
  98.     DIM MenuList$(6, 5)
  99.     StackSize% = 20000
  100.     DIM WinStack%(StackSize%)       'Window stack - we keep screen images
  101.                     'and other info here
  102.     DIM WinFrame%(20, 5)            'Define maximum number of windows as 20
  103.                     'we keep specific window data here
  104.     GOSUB A1000.Window.Hskp
  105.  
  106. '
  107. ' Right here we will display the opening message
  108. '
  109.  
  110.  
  111.     Escape$ = CHR$(27)
  112.     Head$ = "": WinHandle% = 15
  113.     Tr% = 5: Lc% = 6: Br% = 20: Rc% = 65
  114.     Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  115.     RESTORE Open.Msg
  116.     GOSUB A0500.PutText
  117.  
  118. ' Now let's display the pulldown menu
  119.  
  120.     MenuNum% = 0
  121.     GOSUB Display.PullDown
  122.  
  123. ' Let's wait for some input and then route it the the proper routine
  124.  
  125. WaitForInput:
  126.  
  127.     LOCATE , , 0    'Turn the cursor off
  128.     CALL InpWin(WinStack%(), Input.Char$, 0)
  129.     MenuNum% = INSTR(KeyFlds$, Input.Char$)
  130.     IF MenuNum% = 0 OR LEN(Input.Char$) <> 2 THEN
  131.         GOTO WaitForInput
  132.     ELSE
  133.         MenuNum% = INT((MenuNum% / 2) + 1)
  134.         GOTO Display.PullDown
  135.     END IF
  136.     LOCATE , , 1    'Turn the cursor back on
  137.  
  138.  
  139. Display.PullDown:
  140.  
  141.     Tr% = 1: Fg% = 0: Bg% = 3
  142.  
  143.     'This call displays the pulldown menu
  144.     CALL PullDown(WinStack%(), WinFrame%(), WinPoint%, MenuList$(), MenuNum%, Tr%, Fg%, Bg%, MFg%, MBg%, RtnMnu%, RtnItm%)
  145.  
  146.     'This next statement routes the request the the proper routine
  147.     ON RtnMnu% GOSUB QbBios, QbFile, QbDos, QbFunc, QbWindow, Quit
  148.     GOTO WaitForInput
  149.  
  150.  
  151. QbBios:
  152.  
  153.     ON RtnItm% GOSUB BiosKybd, BiosVideo, BiosDisk, BiosMisc
  154.     RETURN
  155.  
  156. BiosKybd:
  157.  
  158.     RESTORE BiosKybd.Msg
  159.     GOSUB A0600.BarMenu1
  160.     WHILE Answer% <> 0
  161.         Head$ = "": WinHandle% = 15
  162.         Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  163.         Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  164.         ON Answer% GOSUB BsKGet, BsKStat, BsKClr, BsKNxt, BsKStog, BsKTogH
  165.         GOSUB A0601.BarMenu1
  166.     WEND
  167.     GOSUB A1020.PopWindow
  168.     RETURN
  169.  
  170. BsKGet:
  171.  
  172.     RESTORE BsKGet.Msg
  173.     GOSUB A0500.PutText
  174.     RETURN
  175.  
  176. BsKStat:
  177.  
  178.     RESTORE BsKStat.Msg
  179.     GOSUB A0500.PutText
  180.     RETURN
  181.  
  182. BsKClr:
  183.  
  184.     RESTORE BsKClr.Msg
  185.     GOSUB A0500.PutText
  186.     RETURN
  187.  
  188. BsKNxt:
  189.  
  190.     RESTORE BsKNxt.Msg
  191.     GOSUB A0500.PutText
  192.     RETURN
  193.  
  194. BsKStog:
  195.  
  196.     RESTORE BsKSTog.Msg
  197.     GOSUB A0500.PutText
  198.     Tr% = 14: Lc% = 50
  199.     GOSUB A0560.ScrlSlct
  200.     x% = UBOUND(TblSlct%)
  201.     REDIM TempArray%(x%)
  202.     FOR x% = 1 TO UBOUND(TblSlct%)
  203.         IF TblSlct%(x%) THEN
  204.             TempArray%(x%) = 1
  205.         ELSE
  206.             TempArray%(x%) = 0
  207.         END IF
  208.     NEXT
  209.     ERASE TblData$, TblSlct%
  210.     CALL BsKStog(TempArray%(1), TempArray%(2), TempArray%(3), TempArray%(4))
  211.     GOSUB A1020.PopWindow
  212.     RETURN
  213.  
  214. BsKTogH:
  215.  
  216.     Tr% = 8: Lc% = 12: Br% = 22: Rc% = 75
  217.     RESTORE BsKTogH.Msg
  218.     GOSUB A0550.PopFText
  219.  
  220.     Input.Char$ = ""
  221.  
  222.     WHILE Input.Char$ <> Escape$
  223.         CALL InpWin(WinStack%(), Input.Char$, 1)
  224.         CALL BsKTogH(Insert%, Caps%, Num%, Scroll%)
  225.         TextLine$ = SPACE$(20)
  226.         IF Insert% = 1 THEN
  227.             MID$(TextLine$, 1) = "Ins"
  228.         END IF
  229.         IF Caps% = 1 THEN
  230.             MID$(TextLine$, 5) = "Cap"
  231.         END IF
  232.         IF Num% = 1 THEN
  233.             MID$(TextLine$, 10) = "Num"
  234.         END IF
  235.         IF Scroll% = 1 THEN
  236.             MID$(TextLine$, 15) = "Scrl"
  237.         END IF
  238.         CALL Putline(Snow%, TextLine$, Br%, Lc% + 5, Fg%, Bg%)
  239.     WEND
  240.  
  241.     GOSUB A1020.PopWindow
  242.     RETURN
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249. BiosVideo:
  250.  
  251.     RESTORE BiosVideo.Msg
  252.     GOSUB A0600.BarMenu1
  253.     WHILE Answer% <> 0
  254.         Head$ = "": WinHandle% = 15
  255.         Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  256.         Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  257.         ON Answer% GOSUB BsVMode, BsVSCur, BsVsWid, BsVsPos, BsVsPag, BsVScrUp, BsVScrDn, BsVRChr, BsVWChr, BsVWTTY
  258.         GOSUB A0601.BarMenu1
  259.     WEND
  260.     GOSUB A1020.PopWindow
  261.     RETURN
  262.  
  263.  
  264. BsVMode:
  265.  
  266.     RESTORE BsVMode.Msg
  267.     GOSUB A0500.PutText
  268.     RETURN
  269.  
  270. BsVSCur:
  271.  
  272.     RESTORE BsVSCur.Msg
  273.     GOSUB A0500.PutText
  274.     RETURN
  275.  
  276. BsVsWid:
  277.  
  278.     RESTORE BsVsWid.Msg
  279.     Tr% = 8: Lc% = 12: Br% = 13: Rc% = 75
  280.     GOSUB A0550.PopFText
  281.  
  282.     CALL BsVsWid(VWidth%)
  283.     TextLine$ = STR$(VWidth%)
  284.     CALL Putline(Snow%, TextLine$, Tr% + 2, Lc% + 8, Fg%, Bg%)
  285.  
  286.     Input.Char$ = ""
  287.  
  288.     WHILE Input.Char$ <> Escape$
  289.         CALL InpWin(WinStack%(), Input.Char$, 1)
  290.     WEND
  291.  
  292.     GOSUB A1020.PopWindow
  293.     RETURN
  294.  
  295. BsVsPos:
  296.  
  297.     RESTORE BsVsPos.Msg
  298.     GOSUB A0500.PutText
  299.     RETURN
  300.  
  301. BsVsPag:
  302.  
  303.     RESTORE BsVsPag.Msg
  304.     GOSUB A0500.PutText
  305.     RETURN
  306.  
  307. BsVScrUp:
  308.  
  309.     RESTORE BsVScrUp.Msg
  310.     GOSUB A0500.PutText
  311.     RETURN
  312.  
  313. BsVScrDn:
  314.  
  315.     RESTORE BsVScrDn.Msg
  316.     GOSUB A0500.PutText
  317.     RETURN
  318.  
  319. BsVRChr:
  320.  
  321.     RESTORE BsVRChr.Msg
  322.     GOSUB A0500.PutText
  323.     RETURN
  324.  
  325. BsVWChr:
  326.  
  327.     RESTORE BsVWChr.Msg
  328.     GOSUB A0500.PutText
  329.     RETURN
  330.  
  331. BsVWTTY:
  332.  
  333.     RESTORE BsVWTTY.Msg
  334.     GOSUB A0500.PutText
  335.     RETURN
  336.  
  337.  
  338. BiosDisk:
  339.     Head$ = "": WinHandle% = 15
  340.     Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  341.     Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  342.     RESTORE Disk.Warning
  343.     GOSUB A0500.PutText
  344.  
  345.     RESTORE BiosDisk.Msg
  346.     GOSUB A0600.BarMenu1
  347.     WHILE Answer% <> 0
  348.         Head$ = "": WinHandle% = 15
  349.         Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  350.         Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  351.         ON Answer% GOSUB BsDStat, BsDReset, BsDVrfy, BsDRead, BsDWrit, BsDFmt, BsDAT
  352.         GOSUB A0601.BarMenu1
  353.     WEND
  354.     GOSUB A1020.PopWindow
  355.     RETURN
  356.  
  357. BsDStat:
  358.  
  359.     RESTORE BsDStat.Msg
  360.     GOSUB A0500.PutText
  361.     RETURN
  362.  
  363. BsDReset:
  364.  
  365.     RESTORE BsDReset.Msg
  366.     GOSUB A0500.PutText
  367.     RETURN
  368.  
  369. BsDVrfy:
  370.  
  371.     RESTORE BsDVrfy.Msg
  372.     GOSUB A0500.PutText
  373.     RETURN
  374.  
  375. BsDRead:
  376.  
  377.     RESTORE BsDRead.Msg
  378.     Tr% = 8: Lc% = 12: Br% = 12: Rc% = 75
  379.     GOSUB A0550.PopFText
  380.  
  381.     Input.Char$ = ""
  382.  
  383.     WHILE Input.Char$ = ""
  384.         CALL InpWin(WinStack%(), Input.Char$, 0)
  385.     WEND
  386.     IF Input.Char$ <> Escape$ THEN
  387.         Text$ = SPACE$(512)
  388.         CALL BsDRead(Text$, "A", 0, 0, 1, Rc%)
  389.         IF Rc% <> 0 THEN
  390.             GOSUB A0570.Put.DiskMsg
  391.         ELSE
  392.             GOSUB FormatBootDisplay
  393.             Head$ = "Boot Sector - Drive A:": WinHandle% = 15
  394.             Tr% = 4: Lc% = 4: Br% = 20: Rc% = 72
  395.             Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  396.             GOSUB A0500.PutTextCstm
  397.         END IF
  398.     END IF
  399.     GOSUB A1020.PopWindow
  400.     RETURN
  401.  
  402. BsDWrit:
  403.  
  404.     RESTORE BsDWrit.Msg
  405.     GOSUB A0500.PutText
  406.     RETURN
  407.  
  408. BsDFmt:
  409.  
  410.     RESTORE BsDFmt.Msg
  411.     Tr% = 8: Lc% = 12: Br% = 12: Rc% = 75
  412.     GOSUB A0550.PopFText
  413.  
  414.     Input.Char$ = ""
  415.  
  416.     WHILE Input.Char$ = ""
  417.         CALL InpWin(WinStack%(), Input.Char$, 0)
  418.     WEND
  419.     IF Input.Char$ <> Escape$ THEN
  420.         Text$ = SPACE$(80)
  421.         FOR x% = 1 TO 9
  422.             MID$(Text$, 1 + ((x% - 1) * 4)) = CHR$(39) + CHR$(1) + CHR$(x%) + CHR$(2)
  423.         NEXT
  424.         CALL BsDFmt(Text$, "A", 1, 39, 9, Rc%)
  425.         Text$ = ""
  426.         GOSUB A0570.Put.DiskMsg
  427.     END IF
  428.     GOSUB A1020.PopWindow
  429.     RETURN
  430.  
  431. BsDAT:
  432.  
  433.     RESTORE BsDAT.Msg
  434.     GOSUB A0500.PutText
  435.     RETURN
  436.  
  437.  
  438. FormatBootDisplay:
  439.  
  440.     Text.Out$ = SPACE$(1024)           'Initailize output area
  441.     CALL HexStr(Text$, Text.Out$) 'convert this record
  442.     CALL CharXlat(Text$, Xlat.Table$)  'get rid of non-ASCII
  443.  
  444.     Hex.Text% = 1
  445.     Chr.Text% = 1
  446.     Buffer.Count% = 1
  447.     Count% = 22
  448.     REDIM Text$(Count%)
  449.  
  450.     FOR Line.Count% = 1 TO 22                   'Max characters on a page
  451.         Text$(Line.Count%) = SPACE$(80)         'Clear output line
  452.  
  453.         FOR Line.Control% = 0 TO 5        'Groups on a line
  454.             MID$(Text$(Line.Count%), (Line.Control% * 8) + Line.Control% + 1, 8) = MID$(Text.Out$, Hex.Text%, 8)
  455.             Hex.Text% = Hex.Text% + 8
  456.         NEXT Line.Control%
  457.  
  458.  
  459.         MID$(Text$(Line.Count%), 55, 24) = MID$(Text$, Chr.Text%, 24)
  460.         Chr.Text% = Chr.Text% + 24
  461.  
  462.     NEXT Line.Count%
  463.     RETURN
  464.  
  465.  
  466. BiosMisc:
  467.  
  468.     RESTORE BiosMisc.Msg
  469.     GOSUB A0600.BarMenu1
  470.     WHILE Answer% <> 0
  471.         Head$ = "": WinHandle% = 15
  472.         Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  473.         Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  474.         ON Answer% GOSUB BsEqpmt, BsPInit, BsPStat, BsPrint, BsPrtSc
  475.         GOSUB A0601.BarMenu1
  476.     WEND
  477.     GOSUB A1020.PopWindow
  478.     RETURN
  479.  
  480. BsEqpmt:
  481.  
  482.     RomDate$ = SPACE$(8)
  483.     CALL BsEqpmt(RomDate$, RAM%, ExtRAM%, ExpRAM%, Printers%, RS232%, Floppies%, GamePort%, Disks%)
  484.     RESTORE BsEqpmt.Txt
  485.     GOSUB A0551.LoadText
  486.  
  487.     MID$(Text$(1), LEN(Text$(1)) - 8) = RomDate$
  488.     MID$(Text$(2), LEN(Text$(1)) - 8) = STR$(RAM%) + "K"
  489.     MID$(Text$(3), LEN(Text$(1)) - 8) = STR$(ExtRAM%) + "K"
  490.     MID$(Text$(4), LEN(Text$(1)) - 8) = STR$(ExpRAM% * 16) + "K"
  491.     MID$(Text$(5), LEN(Text$(1)) - 8) = STR$(Printers%)
  492.     MID$(Text$(6), LEN(Text$(1)) - 8) = STR$(RS232%)
  493.     MID$(Text$(7), LEN(Text$(1)) - 8) = STR$(Floppies%)
  494.     MID$(Text$(8), LEN(Text$(1)) - 8) = STR$(GamePort%)
  495.     MID$(Text$(9), LEN(Text$(1)) - 8) = STR$(Disks%)
  496.     Tr% = 14: Lc% = 50: Br% = 23: Rc% = 79
  497.     GOSUB A0550.PopFText.Cstm
  498.  
  499.     RESTORE BsEqpmt.Msg
  500.     Head$ = "": WinHandle% = 15
  501.     Tr% = 2: Lc% = 12: Br% = 20: Rc% = 72
  502.     Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  503.     GOSUB A0500.PutText
  504.     GOSUB A1020.PopWindow
  505.     RETURN
  506.  
  507. BsPInit:
  508.  
  509.     CALL BsPInit(0, 0)
  510.     RESTORE BsPInit.Msg
  511.     GOSUB A0500.PutText
  512.     RETURN
  513.  
  514. BsPStat:
  515.  
  516.     Tr% = 8: Lc% = 12: Br% = 14: Rc% = 75
  517.     RESTORE BsPStat.Msg
  518.     GOSUB A0550.PopFText
  519.  
  520.     Input.Char$ = ""
  521.  
  522.     WHILE Input.Char$ <> Escape$
  523.         CALL InpWin(WinStack%(), Input.Char$, 1)
  524.         CALL BsPStat(0, Rc%)
  525.  
  526.         Printer.Ready% = (Rc% AND 128) = 128     '1st bit indicates printer ready
  527.         Acknowledge% = (Rc% AND 64) = 64         '2nd bit indicates Ack
  528.         Out.of.Paper% = (Rc% AND 32) = 32        '3rd bit indicates out of paper
  529.         Selected% = (Rc% AND 16) = 16            '4th bit indicates Selected
  530.         IO.Error% = (Rc% AND 8) = 8              '5th bit indicates I/O Error
  531.         Timeout% = (Rc% AND 1) = 1               '8th bit indicates Timeout
  532.         TextLine$ = SPACE$(50)
  533.  
  534.  
  535.         IF Printer.Ready% THEN
  536.             MID$(TextLine$, 1) = "Ready"
  537.         END IF
  538.  
  539.         IF Acknowledge% THEN
  540.             MID$(TextLine$, 7) = "Ack"
  541.         END IF
  542.  
  543.         IF Out.of.Paper% THEN
  544.             MID$(TextLine$, 11) = "Out of Paper"
  545.         END IF
  546.  
  547.         IF IO.Error% THEN
  548.             MID$(TextLine$, 24) = "Off-Line"
  549.         END IF
  550.  
  551.         IF Timeout% THEN
  552.             MID$(TextLine$, 32) = "Time Out"
  553.         END IF
  554.  
  555.         IF Selected% THEN
  556.             MID$(TextLine$, 44) = "Slct"
  557.         END IF
  558.  
  559.         CALL Putline(Snow%, TextLine$, Br%, Lc% + 5, Fg%, Bg%)
  560.     WEND
  561.  
  562.     GOSUB A1020.PopWindow
  563.     RETURN
  564.  
  565. BsPrint:
  566.  
  567.     RESTORE BsPrint.Msg
  568.     GOSUB A0500.PutText
  569.     RETURN
  570.  
  571. BsPrtSc:
  572.  
  573.     RESTORE BsPrtSc.Msg
  574.     Tr% = 8: Lc% = 12: Br% = 14: Rc% = 75
  575.     GOSUB A0550.PopFText
  576.  
  577.     Input.Char$ = ""
  578.  
  579.     WHILE Input.Char$ = ""
  580.         CALL InpWin(WinStack%(), Input.Char$, 0)
  581.     WEND
  582.     IF Input.Char$ <> Escape$ THEN
  583.         CALL BsPrtSc
  584.     END IF
  585.     GOSUB A1020.PopWindow
  586.     RETURN
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601. QbFile:
  602.  
  603.     ON RtnItm% GOSUB AFileAttr, FileFunc, FileRepl
  604.     RETURN
  605.  
  606. AFileAttr:
  607.  
  608.     RESTORE FileAttr.Msg
  609.     GOSUB A0600.BarMenu1
  610.     WHILE Answer% <> 0
  611.         Head$ = "": WinHandle% = 15
  612.         Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  613.         Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  614.         ON Answer% GOSUB FlGTim, FlGDat, FlGVol, FlPDat, FlPVol, FlAttr
  615.         GOSUB A0601.BarMenu1
  616.     WEND
  617.     GOSUB A1020.PopWindow
  618.     RETURN
  619.  
  620. FlGTim:
  621.  
  622.     RESTORE FlGTim.Msg
  623.     GOSUB A0500.PutText
  624.     RETURN
  625.  
  626. FlGDat:
  627.  
  628.     RESTORE FlGDat.Msg
  629.     GOSUB A0500.PutText
  630.     RETURN
  631.  
  632. FlGVol:
  633.  
  634.     RESTORE FlGVol.Msg
  635.     GOSUB A0500.PutText
  636.     RETURN
  637.  
  638. FlPDat:
  639.  
  640.     RESTORE FlPDat.Msg
  641.     GOSUB A0500.PutText
  642.     RETURN
  643.  
  644. FlPVol:
  645.  
  646.     RESTORE FlPVol.Msg
  647.     GOSUB A0500.PutText
  648.     RETURN
  649.  
  650. FlAttr:
  651.  
  652.     RESTORE FlAttr.Msg
  653.     GOSUB A0500.PutText
  654.     RETURN
  655.  
  656. FileFunc:
  657.  
  658.     RESTORE FileFunc.Msg
  659.     GOSUB A0600.BarMenu1
  660.     WHILE Answer% <> 0
  661.         Head$ = "": WinHandle% = 15
  662.         Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  663.         Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  664.         ON Answer% GOSUB FlOpen, FlClos, FlRead, FlWrit, FlPoint, FlCreat, FlDelete, FlRSect, FlWSect
  665.         GOSUB A0601.BarMenu1
  666.     WEND
  667.     GOSUB A1020.PopWindow
  668.     RETURN
  669.  
  670. FlOpen:
  671.  
  672.     RESTORE FlOpen.Msg
  673.     GOSUB A0500.PutText
  674.     RETURN
  675.  
  676. FlClos:
  677.  
  678.     RESTORE FlClos.Msg
  679.     GOSUB A0500.PutText
  680.     RETURN
  681.  
  682. FlRead:
  683.  
  684.     RESTORE FlRead.Msg
  685.     GOSUB A0500.PutText
  686.     RETURN
  687.  
  688. FlWrit:
  689.  
  690.     RESTORE FlWrit.Msg
  691.     GOSUB A0500.PutText
  692.     RETURN
  693.  
  694. FlPoint:
  695.  
  696.     RESTORE FlPoint.Msg
  697.     GOSUB A0500.PutText
  698.     RETURN
  699.  
  700. FlCreat:
  701.  
  702.     RESTORE FlCreat.Msg
  703.     GOSUB A0500.PutText
  704.     RETURN
  705.  
  706. FlDelete:
  707.  
  708.     RESTORE FlDelete.Msg
  709.     GOSUB A0500.PutText
  710.     RETURN
  711.  
  712. FlRSect:
  713.  
  714.     RESTORE FlRSect.Msg
  715.     GOSUB A0500.PutText
  716.     RETURN
  717.  
  718. FlWSect:
  719.  
  720.     RESTORE FlWSect.Msg
  721.     GOSUB A0500.PutText
  722.     RETURN
  723.  
  724.  
  725. FileRepl:
  726.  
  727.     Head$ = "": WinHandle% = 15
  728.     Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  729.     Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  730.     RESTORE FlFile.Msg
  731.     GOSUB A0500.PutText
  732.     RESTORE FileRepl.Msg
  733.     GOSUB A0600.BarMenu1
  734.     WHILE Answer% <> 0
  735.         Head$ = "": WinHandle% = 15
  736.         Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  737.         Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  738.         ON Answer% GOSUB FlFind, FlCnt, FlMove, FlCopy, FlSDrv, FlGDrv, FlCDir, FlGDir, FlMDir, FlDDir, FlDStat
  739.         GOSUB A0601.BarMenu1
  740.     WEND
  741.     GOSUB A1020.PopWindow
  742.     RETURN
  743.  
  744. FlFind:
  745.  
  746.     RESTORE FlFind.Msg
  747.     GOSUB A0500.PutText
  748.     RETURN
  749.  
  750. FlCnt:
  751.  
  752.     RESTORE FlCnt.Msg
  753.     GOSUB A0500.PutText
  754.     RETURN
  755.  
  756. FlMove:
  757.  
  758.     RESTORE FlMove.Msg
  759.     GOSUB A0500.PutText
  760.     RETURN
  761.  
  762. FlCopy:
  763.  
  764.     RESTORE FlCopy.Msg
  765.     GOSUB A0500.PutText
  766.     RETURN
  767.  
  768. FlSDrv:
  769.  
  770.     RESTORE FlSDrv.Msg
  771.     GOSUB A0500.PutText
  772.     RETURN
  773.  
  774. FlGDrv:
  775.  
  776.     RESTORE FlGDrv.Msg
  777.     GOSUB A0500.PutText
  778.     RETURN
  779.  
  780. FlCDir:
  781.  
  782.     RESTORE FlCDir.Msg
  783.     GOSUB A0500.PutText
  784.     RETURN
  785.  
  786. FlGDir:
  787.  
  788.     RESTORE FlGDir.Msg
  789.     GOSUB A0500.PutText
  790.     RETURN
  791.  
  792. FlMDir:
  793.  
  794.     RESTORE FlMDir.Msg
  795.     GOSUB A0500.PutText
  796.     RETURN
  797.  
  798. FlDDir:
  799.  
  800.     RESTORE FlDDir.Msg
  801.     GOSUB A0500.PutText
  802.     RETURN
  803.  
  804. FlDStat:
  805.  
  806.     RESTORE FlDStat.Msg
  807.     GOSUB A0500.PutText
  808.     RETURN
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821. QbDos:
  822.  
  823.     ON RtnItm% GOSUB DosSpool, DosAllc, DosMisc
  824.     RETURN
  825.  
  826. DosSpool:
  827.     RESTORE DosSpool.Msg
  828.     GOSUB A0600.BarMenu1
  829.     WHILE Answer% <> 0
  830.         Head$ = "": WinHandle% = 15
  831.         Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  832.         Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  833.         ON Answer% GOSUB DosPStat, DosPCan, DosPDel, DosPLst, DosPSub
  834.         GOSUB A0601.BarMenu1
  835.     WEND
  836.     GOSUB A1020.PopWindow
  837.     RETURN
  838.  
  839. DosPStat:
  840.  
  841.     RESTORE DosPStat.Msg
  842.     Tr% = 8: Lc% = 12: Br% = 14: Rc% = 75
  843.     GOSUB A0550.PopFText
  844.  
  845.     CALL DosPStat(Rc%)
  846.     IF Rc% = 2 THEN
  847.         Text$ = "Spooler Inactive"
  848.     ELSEIF Rc% = 0 THEN
  849.         Text$ = "Spooler Active"
  850.     ELSE
  851.         GOSUB DosSpoolError
  852.     END IF
  853.     GOSUB DosSpoolStatDisplay
  854.  
  855.     GOSUB A1020.PopWindow
  856.     RETURN
  857.  
  858. DosPCan:
  859.  
  860.     RESTORE DosPCan.Msg
  861.     Tr% = 8: Lc% = 12: Br% = 12: Rc% = 75
  862.     GOSUB A0550.PopFText
  863.  
  864.     Input.Char$ = ""
  865.  
  866.     WHILE Input.Char$ = ""
  867.         CALL InpWin(WinStack%(), Input.Char$, 0)
  868.     WEND
  869.     IF Input.Char$ <> Escape$ THEN
  870.         CALL DosPCan(Rc%)
  871.     END IF
  872.     GOSUB DosSpoolError
  873.     GOSUB DosSpoolStatDisplay
  874.     GOSUB A1020.PopWindow
  875.     RETURN
  876.  
  877. DosPDel:
  878.     RESTORE DosPDel.Msg
  879.     GOSUB A0500.PutText
  880.  
  881.     GOSUB DosGetQueue
  882.     IF Rc% <> 0 THEN
  883.         GOSUB DosSpoolError
  884.         GOSUB DosSpoolStatDisplay
  885.         RETURN
  886.     END IF
  887.  
  888.     x% = 1
  889.     WHILE LEFT$(SText$(x%), 1) <> CHR$(0) AND x% < Count%
  890.         x% = x% + 1
  891.     WEND
  892.     x% = x% - 1
  893.  
  894.     IF x% < 1 THEN
  895.         Text$ = "Queue Empty"
  896.         GOSUB DosSpoolStatDisplay
  897.         RETURN
  898.     END IF
  899.  
  900.     REDIM TblData$(x%), TblSlct%(x%)
  901.     FOR x% = 1 TO UBOUND(TblData$)
  902.         y% = INSTR(SText$(x%), CHR$(0))
  903.         TblData$(x%) = LEFT$(SText$(x%), y%)
  904.     NEXT
  905.  
  906.     Tr% = 14: Lc% = 5
  907.     GOSUB A0560.ScrlSlct.Cstm
  908.  
  909.     Rc% = 0: x% = 1
  910.     WHILE Rc% = 0 AND x% <= UBOUND(TblData$)
  911.         IF TblSlct%(x%) THEN
  912.             CALL DosPDel(TblData$(x%), Rc%)
  913.         END IF
  914.         x% = x% + 1
  915.     WEND
  916.     ERASE TblData$, TblSlct%
  917.  
  918.     GOSUB DosSpoolError
  919.     GOSUB DosSpoolStatDisplay
  920.  
  921.     ERASE SText$
  922.     GOSUB A1020.PopWindow
  923.     RETURN
  924.  
  925. DosPLst:
  926.  
  927.     RESTORE DosPLst.Msg
  928.     Tr% = 8: Lc% = 11: Br% = 12: Rc% = 75
  929.     GOSUB A0550.PopFText
  930.  
  931.     Input.Char$ = ""
  932.  
  933.     WHILE Input.Char$ = ""
  934.         CALL InpWin(WinStack%(), Input.Char$, 0)
  935.     WEND
  936.  
  937.     GOSUB DosGetQueue
  938.     IF Rc% <> 0 THEN GOTO DosPLstError
  939.     Head$ = "": WinHandle% = 15
  940.     Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  941.     Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  942.  
  943.     x% = 1
  944.     WHILE LEFT$(SText$(x%), 1) <> CHR$(0) AND x% < Count%
  945.         x% = x% + 1
  946.     WEND
  947.     x% = x% - 1
  948.  
  949.     IF x% < 1 THEN
  950.         Text$ = "Queue Empty"
  951.         GOTO DosQueueEmpty
  952.     END IF
  953.  
  954.     REDIM Text$(x%)
  955.     LineWidth% = 0
  956.     FOR x% = 1 TO UBOUND(Text$)
  957.         Text$(x%) = SText$(x%)
  958.         IF LEN(Text$(x%)) > LineWidth% THEN
  959.             LineWidth% = LEN(Text$(x%))
  960.         END IF
  961.     NEXT
  962.  
  963.     IF x% < Br% - Tr% THEN
  964.         Br% = Tr% + x%
  965.     END IF
  966.     IF LineWidth% < Rc% - Lc% THEN
  967.         Rc% = Lc% + LineWidth%
  968.     END IF
  969.  
  970.     GOSUB A0500.PutTextCstm
  971.     GOTO DosPLstExit
  972.  
  973.  
  974. DosPLstError:
  975.     GOSUB DosSpoolError
  976.  
  977. DosQueueEmpty:
  978.     GOSUB DosSpoolStatDisplay
  979.  
  980. DosPLstExit:
  981.     ERASE SText$
  982.     GOSUB A1020.PopWindow
  983.     RETURN
  984.  
  985.  
  986. DosPSub:
  987.  
  988.     RESTORE DosPSub.Msg
  989.     Tr% = 8: Lc% = 11: Br% = 12: Rc% = 75
  990.     GOSUB A0550.PopFText
  991.  
  992.     ExtendName% = -1
  993.     GOSUB A0590.GetDataSet
  994.  
  995.     IF LastChar$ = CHR$(27) THEN GOTO DosPSubExit
  996.  
  997.     CALL XVerify(InputText$, " ", x%)
  998.     FileNm$ = MID$(InputText$, 1, x% + 1)
  999.     MID$(FileNm$, x% + 1) = CHR$(0)
  1000.     CALL DosPSub(FileNm$, Rc%)
  1001.     GOSUB DosSpoolError
  1002.     GOSUB DosSpoolStatDisplay
  1003.  
  1004. DosPSubExit:
  1005.  
  1006.     GOSUB A1020.PopWindow
  1007.     GOSUB A1020.PopWindow
  1008.     RETURN
  1009.  
  1010. DosSpoolError:
  1011.     IF Rc% = 0 THEN
  1012.         Text$ = "Completed successfully"
  1013.     ELSEIF Rc% = 1 THEN
  1014.         Text$ = "Spooler Inactive"
  1015.     ELSEIF Rc% = 2 THEN
  1016.         Text$ = "File not found"
  1017.     ELSEIF Rc% = 3 THEN
  1018.         Text$ = "Path not found"
  1019.     ELSEIF Rc% = 4 THEN
  1020.         Text$ = "Too many open files"
  1021.     ELSEIF Rc% = 5 THEN
  1022.         Text$ = "Access denied"
  1023.     ELSEIF Rc% = 8 THEN
  1024.         Text$ = "Queue full"
  1025.     ELSEIF Rc% = 9 THEN
  1026.         Text$ = "Spooler busy"
  1027.     ELSEIF Rc% = 12 THEN
  1028.         Text$ = "Name too long"
  1029.     ELSEIF Rc% = 15 THEN
  1030.         Text$ = "Invalid drive"
  1031.     ELSEIF Rc% = 255 THEN
  1032.         Text$ = "Invalid DOS version - DOS 3.00 or higher is needed."
  1033.     END IF
  1034.     RETURN
  1035.  
  1036.  
  1037. DosSpoolStatDisplay:
  1038.  
  1039.     Lc% = 10: Tr% = 20
  1040.     GOSUB A0580.PopField
  1041.  
  1042.     Input.Char$ = ""
  1043.  
  1044.     WHILE Input.Char$ = ""
  1045.         CALL InpWin(WinStack%(), Input.Char$, 0)
  1046.     WEND
  1047.  
  1048.     GOSUB A1020.PopWindow
  1049.     RETURN
  1050.  
  1051. DosGetQueue:
  1052.  
  1053.     Count% = 33
  1054.     REDIM SText$(Count%)
  1055.     FOR x% = 1 TO Count%
  1056.         SText$(x%) = SPACE$(65)
  1057.     NEXT
  1058.  
  1059.     CALL DosPLst(VARPTR(SText$(1)), Rc%)
  1060.     RETURN
  1061.  
  1062.  
  1063.  
  1064.  
  1065. DosAllc:
  1066.     Head$ = "": WinHandle% = 15
  1067.     Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  1068.     Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  1069.     RESTORE DosAllcT.Msg
  1070.     GOSUB A0500.PutText
  1071.     RESTORE DosAllc.Msg
  1072.     GOSUB A0600.BarMenu1
  1073.     WHILE Answer% <> 0
  1074.         Head$ = "": WinHandle% = 15
  1075.         Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  1076.         Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  1077.         ON Answer% GOSUB DosMAllc, DosMFree, DosMGet, DosMPut
  1078.         GOSUB A0601.BarMenu1
  1079.     WEND
  1080.     GOSUB A1020.PopWindow
  1081.     RETURN
  1082.  
  1083. DosMAllc:
  1084.  
  1085.     RESTORE DosMAllc.Msg
  1086.     GOSUB A0500.PutText
  1087.     RETURN
  1088.  
  1089. DosMFree:
  1090.  
  1091.     RESTORE DosMFree.Msg
  1092.     GOSUB A0500.PutText
  1093.     RETURN
  1094.  
  1095. DosMGet:
  1096.  
  1097.     RESTORE DosMGet.Msg
  1098.     GOSUB A0500.PutText
  1099.     RETURN
  1100.  
  1101. DosMPut:
  1102.  
  1103.     RESTORE DosMPut.Msg
  1104.     GOSUB A0500.PutText
  1105.     RETURN
  1106.  
  1107.  
  1108.  
  1109. DosMisc:
  1110.     RESTORE DosMisc.Msg
  1111.     GOSUB A0600.BarMenu1
  1112.     WHILE Answer% <> 0
  1113.         Head$ = "": WinHandle% = 15
  1114.         Tr% = 8: Lc% = 12: Br% = 20: Rc% = 72
  1115.         Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  1116.         ON Answer% GOSUB DosPStat, DosPCan, DosPDel, DosPLst, DosPSub
  1117.         ON Answer% GOSUB Boot, DosChOut, DosChrIn, DosStrIn, DosRed, DosPrSc, DosVer, DosVrfy
  1118.         GOSUB A0601.BarMenu1
  1119.     WEND
  1120.     GOSUB A1020.PopWindow
  1121.     RETURN
  1122.  
  1123. Boot:
  1124.  
  1125.     RESTORE Boot.Msg
  1126.     GOSUB A0500.PutText
  1127.     RETURN
  1128.  
  1129. DosChOut:
  1130.  
  1131.     RESTORE DosChOut.Msg
  1132.     GOSUB A0500.PutText
  1133.     RETURN
  1134.  
  1135. DosChrIn:
  1136.  
  1137.     RESTORE DosChrIn.Msg
  1138.     GOSUB A0500.PutText
  1139.     RETURN
  1140.  
  1141. DosStrIn:
  1142.  
  1143.     RESTORE DosStrIn.Msg
  1144.     GOSUB A0500.PutText
  1145.     RETURN
  1146.  
  1147. DosRed:
  1148.  
  1149.     RESTORE DosRed.Msg
  1150.     GOSUB A0500.PutText
  1151.     RETURN
  1152.  
  1153. DosPrSc:
  1154.  
  1155.     RESTORE DosPrSc.Msg
  1156.     GOSUB A0500.PutText
  1157.     RETURN
  1158.  
  1159. DosVer:
  1160.  
  1161.     RESTORE DosVer.Msg
  1162.     GOSUB A0500.PutText
  1163.     RETURN
  1164.  
  1165. DosVrfy:
  1166.  
  1167.     RESTORE DosVrfy.Msg
  1168.     GOSUB A0500.PutText
  1169.     RETURN
  1170.  
  1171.  
  1172.  
  1173. QbFunc:
  1174.  
  1175.     Head$ = "": WinHandle% = 15
  1176.     Tr% = 8: Lc% = 4: Br% = 20: Rc% = 75
  1177.     Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  1178.     RESTORE AvailMsg
  1179.     GOSUB A0500.PutText
  1180.     ON RtnItm% GOSUB StrFunc, SortFunc, DateFunc, MiscFunc
  1181.     RETURN
  1182.  
  1183. StrFunc:
  1184.  
  1185.     RESTORE StrFunc.Msg
  1186.     GOSUB A0500.PutText
  1187.     RETURN
  1188.  
  1189. SortFunc:
  1190.  
  1191.     RESTORE SortFunc.Msg
  1192.     GOSUB A0500.PutText
  1193.     RETURN
  1194.  
  1195. DateFunc:
  1196.  
  1197.     RESTORE DateFunc.Msg
  1198.     GOSUB A0500.PutText
  1199.     RETURN
  1200.  
  1201. MiscFunc:
  1202.  
  1203.     RESTORE MiscFunc.Msg
  1204.     GOSUB A0500.PutText
  1205.     RETURN
  1206.  
  1207.  
  1208. QbWindow:
  1209.  
  1210.     Head$ = "": WinHandle% = 15
  1211.     Tr% = 8: Lc% = 4: Br% = 20: Rc% = 75
  1212.     Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  1213.     RESTORE AvailMsg
  1214.     GOSUB A0500.PutText
  1215.     ON RtnItm% GOSUB WinPrim, WinHigh, WinInput, WinMenus
  1216.     RETURN
  1217.  
  1218. WinPrim:
  1219.  
  1220.     RESTORE WinPrim.Msg
  1221.     GOSUB A0500.PutText
  1222.     RETURN
  1223.  
  1224. WinHigh:
  1225.  
  1226.     RESTORE WinHigh.Msg
  1227.     GOSUB A0500.PutText
  1228.     RETURN
  1229.  
  1230. WinInput:
  1231.  
  1232.     RESTORE WinInput.Msg
  1233.     GOSUB A0500.PutText
  1234.     RETURN
  1235.  
  1236. WinMenus:
  1237.  
  1238.     RESTORE WinMenus.Msg
  1239.     GOSUB A0500.PutText
  1240.     RETURN
  1241.  
  1242.  
  1243.  
  1244.  
  1245. Quit:
  1246.  
  1247.  
  1248.     Head$ = "": WinHandle% = 15
  1249.     Tr% = 5: Lc% = 6: Br% = 20: Rc% = 50
  1250.     Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  1251.     RESTORE Close.Msg
  1252.     GOSUB A0500.PutText
  1253.  
  1254.     CLS
  1255.     END
  1256.  
  1257. A0500.PutText:
  1258.  
  1259.     GOSUB A0510.LoadText
  1260.     IF x% < Br% - Tr% THEN
  1261.         Br% = Tr% + x% - 1
  1262.     END IF
  1263.  
  1264. A0500.PutTextCstm:
  1265.     GOSUB A1010.Prep.Window
  1266.     CALL PopText(Win.Handle%, WinStack%(), WinFrame%(), WinPoint%, Text$())
  1267.     ERASE Text$
  1268.     GOSUB A1020.PopWindow
  1269.     RETURN
  1270.  
  1271. A0510.LoadText:
  1272.  
  1273.     READ Count%
  1274.     REDIM Text$(Count%)
  1275.     x% = 1
  1276.     READ Text$(1)
  1277.     WHILE Text$(x%) <> "EOM" AND x% <= Count%
  1278.         x% = x% + 1
  1279.         READ Text$(x%)
  1280.     WEND
  1281.     Text$(x%) = ""
  1282.     RETURN
  1283.  
  1284. A0511.LoadText:
  1285.  
  1286.     READ Count%
  1287.     REDIM MenuText$(Count%)
  1288.     x% = 1
  1289.     READ MenuText$(1)
  1290.     WHILE MenuText$(x%) <> "EOM" AND x% <= Count%
  1291.         x% = x% + 1
  1292.         READ MenuText$(x%)
  1293.     WEND
  1294.     MenuText$(x%) = ""
  1295.     RETURN
  1296.  
  1297. A0550.PopFText:
  1298.  
  1299.     Head$ = "": WinHandle% = 13
  1300.     Frame% = 2: Fg% = 15: Bg% = 4: Grow% = 0: Shade% = 1
  1301.     GOSUB A0551.LoadText
  1302. A0550.PopFText.Cstm:
  1303.     GOSUB A1010.Prep.Window
  1304.     CALL PopFText(WinHandle%, WinStack%(), WinFrame%(), WinPoint%, Location%(), TLength%(), TColors%(), Text$())
  1305.     ERASE Text$, Location%, TColors%, TLength%
  1306.     RETURN
  1307.  
  1308. A0551.LoadText:
  1309.  
  1310.     READ Count%
  1311.     REDIM Text$(Count%), Location%(Count%, 2), TColors%(Count%, 2), TLength%(Count%)
  1312.     x% = 1
  1313.     READ Text$(1)
  1314.     WHILE Text$(x%) <> "EOM" AND x% <= Count%
  1315.         TLength%(x%) = LEN(Text$(x%))
  1316.         READ Location%(x%, 1)
  1317.         READ Location%(x%, 2)
  1318.         READ TColors%(x%, 1)
  1319.         READ TColors%(x%, 2)
  1320.         x% = x% + 1
  1321.         READ Text$(x%)
  1322.     WEND
  1323.     Text$(x%) = ""
  1324.     RETURN
  1325.  
  1326. A0560.ScrlSlct:
  1327.  
  1328.     GOSUB A0561.LoadText
  1329.  
  1330. A0560.ScrlSlct.Cstm:
  1331.  
  1332.     LineWidth% = 0
  1333.     Height% = 0
  1334.     FOR x% = 1 TO UBOUND(TblData$)
  1335.         IF LEN(TblData$(x%)) > 0 THEN
  1336.             Height% = Height% + 1
  1337.             IF LEN(TblData$(x%)) > LineWidth% THEN
  1338.                 LineWidth% = LEN(TblData$(x%))
  1339.             END IF
  1340.         END IF
  1341.     NEXT
  1342.  
  1343.     WinHandle% = 12
  1344.     Br% = Tr% + Height% - 1: Rc% = Lc% + LineWidth% + 1: Fg% = 0: Bg% = 6
  1345.     IF Br% > 23 THEN Br% = 23
  1346.     GOSUB A1010.Prep.Window
  1347.  
  1348.     CALL ScrlSlct(WinHandle%, WinStack%(), WinFrame%(), WinPoint%, TblData$(), TblSlct%())
  1349.     RETURN
  1350.  
  1351. A0561.LoadText:
  1352.  
  1353.     READ Count%
  1354.     REDIM TblData$(Count%), TblSlct%(Count%)
  1355.     x% = 1
  1356.     READ TblData$(1)
  1357.     WHILE TblData$(x%) <> "EOM" AND x% <= Count%
  1358.         x% = x% + 1
  1359.         READ TblData$(x%)
  1360.     WEND
  1361.     TblData$(x%) = ""
  1362.     RETURN
  1363.  
  1364.  
  1365. A0570.Put.DiskMsg:
  1366.  
  1367.     IF Rc% = 0 THEN
  1368.         Text$ = "Completed successfully"
  1369.     ELSE
  1370.         Text$ = "Function was not completed"
  1371.     END IF
  1372.  
  1373.     Lc% = 10: Tr% = 20
  1374.     GOSUB A0580.PopField
  1375.  
  1376.     Input.Char$ = ""
  1377.  
  1378.     WHILE Input.Char$ = ""
  1379.         CALL InpWin(WinStack%(), Input.Char$, 0)
  1380.     WEND
  1381.  
  1382.     GOSUB A1020.PopWindow
  1383.     RETURN
  1384.  
  1385. A0580.PopField:
  1386.  
  1387.     Count% = 1
  1388.     REDIM Text$(Count%), Location%(Count%, 2), TColors%(Count%, 2), TLength%(Count%)
  1389.  
  1390.     Head$ = "": WinHandle% = 12
  1391.     Frame% = 2: Fg% = 15: Bg% = 0: Grow% = 0: Shade% = 0
  1392.  
  1393.     Text$(1) = Text$: TLength%(1) = LEN(Text$)
  1394.     Location%(1, 2) = 1
  1395.     Br% = Tr%: Rc% = Lc% + LEN(Text$) + 1
  1396.  
  1397.     GOSUB A1010.Prep.Window
  1398.     CALL PopFText(WinHandle%, WinStack%(), WinFrame%(), WinPoint%, Location%(), TLength%(), TColors%(), Text$())
  1399.     ERASE Text$, Location%, TColors%, TLength%
  1400.     RETURN
  1401.  
  1402. A0590.GetDataSet:
  1403.  
  1404.     Head$ = "Enter file to print": WinHandle% = 10
  1405.     Tr% = Tr% + 5: Br% = Tr%: Lc% = 5: Rc% = 73
  1406.     Frame% = 2: Fg% = 15: Bg% = 1: Grow% = 0: Shade% = 1
  1407.     GOSUB A1010.Prep.Window
  1408.     Row% = 1: Col% = 4: InitialValue$ = "": ExitList$ = CHR$(27)
  1409.     IF ExtendName% THEN
  1410.         Pic$ = "U:\UXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  1411.     ELSE
  1412.         Pic$ = "UXXXXXXX.UXX"
  1413.     END IF
  1414.     Fg% = 7: Bg% = 1
  1415.     CALL InChar(WinHandle%, WinStack%(), WinFrame%(), Row%, Col%, Fg%, Bg%, Pic$, InitialValue$, ExitList$, InputText$, LastChar$)
  1416.     RETURN
  1417.  
  1418. A0600.BarMenu1:
  1419.  
  1420.     GOSUB A0511.LoadText
  1421.     LineWidth% = 0
  1422.     Height% = 0
  1423.     FOR x% = 1 TO UBOUND(MenuText$)
  1424.         IF LEN(MenuText$(x%)) > 0 THEN
  1425.             Height% = Height% + 1
  1426.             IF LEN(MenuText$(x%)) > LineWidth% THEN
  1427.                 LineWidth% = LEN(MenuText$(x%))
  1428.             END IF
  1429.         END IF
  1430.     NEXT
  1431.  
  1432.     WinHandle% = 14
  1433.     Tr% = 5: Lc% = 6: Br% = Tr% + Height% - 1: Rc% = Lc% + LineWidth% + 1: Fg% = 0: Bg% = 3
  1434.     GOSUB A1010.Prep.Window
  1435.  
  1436. A0601.BarMenu1:
  1437.     CALL BarMenu1(WinHandle%, WinStack%(), WinFrame%(), WinPoint%, MenuText$(), Answer%)
  1438.     RETURN
  1439.  
  1440. A1000.Window.Hskp:
  1441.  
  1442.     RESTORE MainMenu.Data
  1443.     FOR x% = 1 TO UBOUND(MenuList$, 2)
  1444.         FOR y% = 1 TO UBOUND(MenuList$, 1)
  1445.             READ MenuList$(y%, x%)
  1446.         NEXT y%
  1447.     NEXT x%
  1448.  
  1449.     KeyFlds$ = CHR$(0) + CHR$(48) + CHR$(0) + CHR$(33) + CHR$(0) + CHR$(32) + CHR$(0) + CHR$(33) + CHR$(0) + CHR$(17) + CHR$(0) + CHR$(16)
  1450.  
  1451.     Text$ = STRING$(2000, CHR$(176))
  1452.     Row% = 1: Col% = 1: Fg% = 7: Bg% = 2
  1453.     CALL Putline(Snow%, Text$, Row%, Col%, Fg%, Bg%)
  1454.     Text$ = ""
  1455.  
  1456.     MFg% = 15: MBg% = 0
  1457.     MaxWin% = 20
  1458.     ExitKeys$ = CHR$(27)
  1459.     TabLen% = 8
  1460.     SBar% = 1: SRow% = 25: SFg% = 15: Sbg% = 1
  1461.  
  1462.     CALL InitWin(WinStack%(), WinFrame%(), WinPoint%, MaxWin%, ExitKeys$, TabLen%, SBar%, SRow%, SFg%, Sbg%, Snow%)
  1463.     RETURN
  1464.  
  1465. A1010.Prep.Window:
  1466.  
  1467.     CALL CngWin(WinHandle%, WinStack%(), Tr%, Lc%, Br%, Rc%, Frame%, Fg%, Bg%, Grow%, Shade%)
  1468.  
  1469.     CALL PushWin(WinHandle%, WinStack%(), WinFrame%(), WinPoint%)
  1470.     CALL Putwind(WinHandle%, WinStack%(), Head$)
  1471.     RETURN
  1472.  
  1473. A1020.PopWindow:
  1474.  
  1475.     CALL PopWin(WinStack%(), WinFrame%(), WinPoint%)
  1476.     RETURN
  1477.  
  1478. Open.Msg:
  1479.     DATA  80
  1480.     DATA  " Welcome to the QBWARE Version 1.2 demo."
  1481.     DATA  " "
  1482.     DATA  " This demo was written using QB V4 and the QBWARE"
  1483.     DATA  " utility libraries.  Before you get started, just a"
  1484.     DATA  " couple of hints.  The main screen will look a little"
  1485.     DATA  " like the QB editor.  It works like it also.  To see"
  1486.     DATA  " a specific demo, press Alt and the corresponding"
  1487.     DATA  " letter.  For example, press Alt+B to see the BIOS"
  1488.     DATA  " demo.  A pulldown menu will appear and you can choose"
  1489.     DATA  " a specific demo.  Much of the information presented"
  1490.     DATA  " here will appear in windows.  When you see the words"
  1491.     DATA  " [More..] or [End...] at the bottom of the window, you"
  1492.     DATA  " can use the normal cursor control keys to move around"
  1493.     DATA  " the window."
  1494.     DATA  " "
  1495.     DATA  " Press [PgDn] now"
  1496.     DATA  " "
  1497.     DATA  " This includes:"
  1498.     DATA  "               [PgUp]"
  1499.     DATA  "               [PgDn]"
  1500.     DATA  "               [Home]"
  1501.     DATA  "               [End]"
  1502.     DATA  "               [Tab]"
  1503.     DATA  "               [UpArrow]"
  1504.     DATA  "               [DnArrow]"
  1505.     DATA  "               [LeftArrow]"
  1506.     DATA  "               [RightArrow]"
  1507.     DATA  "               [Escape]"
  1508.     DATA ""
  1509.     DATA  " If you ever get into trouble, just press"
  1510.     DATA  " Escape ([Esc]) - that generally closes the window."
  1511.     DATA  ""
  1512.     DATA  " Many of the windows shown during this demo will"
  1513.     DATA  " to be missing some text at the right-hand edge of"
  1514.     DATA  " window.  Just press [RightArrow] and you'll see the"
  1515.     DATA  " rest of the line.  Try it now."
  1516.     DATA  ""
  1517.     DATA  " This is an extra long line to demonstrate right and left scrolling as handled by QBWARE."
  1518.     DATA  ""
  1519.     DATA  " This demo brought to you by AJM Software."
  1520.     DATA  " If you have any questions, leave me a note on"
  1521.     DATA  " CompuServe or Genie."
  1522.     DATA  ""
  1523.     DATA  " Marcel Madonna    CompuServe 76267,416"
  1524.     DATA  "                   Genie      M.D.MADONNA"
  1525.     DATA  ""
  1526.     DATA  "     Press [Esc] to continue ....."
  1527.     DATA  "EOM"
  1528.  
  1529. Close.Msg:
  1530.     DATA  16
  1531.     DATA " Thanks for viewing the demo."
  1532.     DATA " Current versions of all of the"
  1533.     DATA " QBWARE libraries are always"
  1534.     DATA " available on CompuServe or GENIE"
  1535.     DATA " or from:"
  1536.     DATA " "
  1537.     DATA "        AJM Software"
  1538.     DATA "        P.O. Box 5303"
  1539.     DATA "        Arvada, Co. 8005-0303"
  1540.     DATA ""
  1541.     DATA " Please use the ordering form in"
  1542.     DATA " REGISTER.TXT when ordering direct"
  1543.     DATA " from AJM Software."
  1544.     DATA " Marcel Madonna    CompuServe 76267,416"
  1545.     DATA "                   Genie      M.D.MADONNA"
  1546.     DATA  "EOM"
  1547.  
  1548.  
  1549. BiosMisc.Msg:
  1550.     DATA  6
  1551.     DATA "BSEQPMT  - Get installed equipment"
  1552.     DATA "BSPINIT  - Initialize printer"
  1553.     DATA "BSPSTAT  - Get printer status"
  1554.     DATA "BSPRINT  - Print a string of characters"
  1555.     DATA "BSPRTSC  - Print screen"
  1556.     DATA "EOM"
  1557.  
  1558.  
  1559. BiosDisk.Msg:
  1560.     DATA  8
  1561.     DATA "BSDSTAT  - Get diskette controller status"
  1562.     DATA "BSDRESET - Reset floppy disk controller"
  1563.     DATA "BSDVRFY  - Verify sectors on a diskette"
  1564.     DATA "BSDREAD  - Read a sector from a diskette"
  1565.     DATA "BSDWRIT  - Write a sector to diskette"
  1566.     DATA "BSDFMT   - Format a track on a diskette"
  1567.     DATA "AT Disk Services"
  1568.     DATA  "EOM"
  1569.  
  1570.  
  1571. BiosVideo.Msg:
  1572.     DATA  12
  1573.     DATA "BSVMODE  - Get or set video mode"
  1574.     DATA "BSVSCUR  - Set or get cursor size"
  1575.     DATA "BSVSWID  - Get screen width"
  1576.     DATA "BSVSPOS  - Get or set cursor position"
  1577.     DATA "BSVSPAG  - Get or set video display page"
  1578.     DATA "BSVSCRUP - Scroll up or clear a window"
  1579.     DATA "BSVSCRDN - Scroll down or clear a window"
  1580.     DATA "BSVRCHR  - Read a character and attribute from the screen"
  1581.     DATA "BSVWCHR  - Write a character to the screen"
  1582.     DATA "BSVWTTY  - Write in teletype mode"
  1583.     DATA "EOM"
  1584.  
  1585. BiosKybd.Msg:
  1586.     DATA  7
  1587.     DATA "BSKGET   - Get a character from the keyboard"
  1588.     DATA "BSKSTAT  - Determine the status of the toggle keys"
  1589.     DATA "BSKCLR   - Clear the keyboard buffer"
  1590.     DATA "BSKNXT   - Preview the keyboard buffer"
  1591.     DATA "BSKSTOG  - Set keyboard toggles"
  1592.     DATA "BSKTOGH  - Determine whether toggle keys are pressed"
  1593.     DATA "EOM"
  1594.  
  1595. DosSpool.Msg:
  1596.     DATA 6
  1597.     DATA "DOSPSTAT - Request spooler status"
  1598.     DATA "DOSPCAN  - Cancel all spooled files"
  1599.     DATA "DOSPDEL  - Delete a file from the queue"
  1600.     DATA "DOSPLST  - List all files in the queue"
  1601.     DATA "DOSPSUB  - Submit a file to the queue"
  1602.     DATA "EOM"
  1603.  
  1604.  
  1605. DosAllc.Msg:
  1606.     DATA 5
  1607.     DATA "DOSMALLC - Allocate additional memory"
  1608.     DATA "DOSMFREE - Free memory"
  1609.     DATA "DOSMGET  - Get some data from allocated memory"
  1610.     DATA "DOSMPUT  - Put some data in allocated memory"
  1611.     DATA "EOM"
  1612.  
  1613. DosMisc.Msg:
  1614.     DATA 9
  1615.     DATA "BOOT     - Initiate a cold or warm boot"
  1616.     DATA "DOSCHOUT - Write a string to the standard output device"
  1617.     DATA "DOSCHRIN - Read a character from the standard input device"
  1618.     DATA "DOSSTRIN - Read a string from the standard input device"
  1619.     DATA "DOSRED   - Redirect a DOS standard handle"
  1620.     DATA "DOSPRSC  - Print the screen"
  1621.     DATA "DOSVER   - Get the DOS version"
  1622.     DATA "DOSVRFY  - Turn verify mode on and off"
  1623.     DATA "EOM"
  1624.  
  1625. FileAttr.Msg:
  1626.     DATA 12
  1627.     DATA "FLGTIM   - Get file creation time"
  1628.     DATA "FLGDAT   - Get file creation date"
  1629.     DATA "FLGVOL   - Get volume label"
  1630.     DATA "FLPDAT   - Change file creation date and time"
  1631.     DATA "FLPVOL   - Change volume label"
  1632.     DATA "FLATTR   - Change file attributes"
  1633.     DATA "EOM"
  1634.  
  1635. FileFunc.Msg:
  1636.     DATA 12
  1637.     DATA "FLOPEN   - Open a file"
  1638.     DATA "FLCLOS   - Close a file"
  1639.     DATA "FLREAD   - Read a record from a file"
  1640.     DATA "FLWRIT   - Write a record to a file"
  1641.     DATA "FLPOINT  - Point to a specific record in a file"
  1642.     DATA "FLCREAT  - Create a file"
  1643.     DATA "FLDELETE - Delete a file"
  1644.     DATA "FLRSECT  - Read a sector"
  1645.     DATA "FLWSECT  - Write a sector"
  1646.     DATA "EOM"
  1647.  
  1648. FileRepl.Msg:
  1649.     DATA 12
  1650.     DATA "FLFIND   - Find a file or group of files"
  1651.     DATA "FLCNT    - Count the number of matching files"
  1652.     DATA "FLMOVE   - Move a file"
  1653.     DATA "FLCOPY   - Copy a file to another file"
  1654.     DATA "FLSDRV   - Set the current drive"
  1655.     DATA "FLGDRV   - Get the current drive"
  1656.     DATA "FLCDIR   - Change the current directory"
  1657.     DATA "FLGDIR   - Get the current directory"
  1658.     DATA "FLMDIR   - Make a directory"
  1659.     DATA "FLDDIR   - Delete a directory"
  1660.     DATA "FLDSTAT  - Retrieve disk statistics"
  1661.     DATA "EOM"
  1662.  
  1663. BsKGet.Msg:
  1664.     DATA 20
  1665.     DATA "BsKGet is useful when you need to know exactly which key"
  1666.     DATA "was pressed.  It provides your program with the scan code"
  1667.     DATA "of the key that was pressed.  For example, this service"
  1668.     DATA "enables you to tell whether the '1' on the numeric keypad"
  1669.     DATA "was pressed or '1' above the 'Q' was pressed."
  1670.     DATA "EOM"
  1671.  
  1672. BsKStat.Msg:
  1673.     DATA 40
  1674.     DATA "BsKStat can tell you the status of the various toggle"
  1675.     DATA "switches on your keyboard.  The situations detected are:"
  1676.     DATA ""
  1677.     DATA "                  Insert"
  1678.     DATA "                  CapsLock"
  1679.     DATA "                  NumLock"
  1680.     DATA "                  ScrollLock"
  1681.     DATA "                  Alt key depressed"
  1682.     DATA "                  Ctrl key depressed"
  1683.     DATA "                  Left Shift depressed"
  1684.     DATA "                  Right Shift depressed"
  1685.     DATA ""
  1686.     DATA "You can press any of these keys right now and watch the"
  1687.     DATA "status bar at the bottom of the screen. It will reflect"
  1688.     DATA "the current status of these keys."
  1689.     DATA ""
  1690.     DATA "A special note for users of the enhanced keyboard.  Pressing"
  1691.     DATA "the [Pause] key will cause the Ctrl toggle to display, and"
  1692.     DATA "using any of the new arrow keys or the new [Insert],[Delete],"
  1693.     DATA "[Home], [End], [PgUp], [PgDn] keys will cause the LShft"
  1694.     DATA "toggle to display if [Num Lock] is on."
  1695.     DATA "EOM"
  1696.  
  1697. BsKClr.Msg:
  1698.     DATA 5
  1699.     DATA "BsKClr will quickly clear the keyboard buffer.  This service"
  1700.     DATA "is useful when an error condition is detected or after a report"
  1701.     DATA "has printed.  In both of these circumstances, the buffer should"
  1702.     DATA "be cleared of any keystrokes."
  1703.     DATA "EOM"
  1704.  
  1705. BsKNxt.Msg:
  1706.     DATA 6
  1707.     DATA "BsKNxt will check the keyboard buffer to determine if a"
  1708.     DATA "key has been depressed.  It either returns the value of"
  1709.     DATA "key that was entered or let's you know that no key was"
  1710.     DATA "entered.  It is generally used in conjunction with"
  1711.     DATA "BsKGet to provide total control of keyboard entry."
  1712.     DATA "EOM"
  1713.  
  1714. BsKSTog.Msg:
  1715.     DATA 6
  1716.     DATA "BsKSTog will turn the toggle keys on or off.  When you press"
  1717.     DATA "[Esc], a list of keys to toggle will appear.  Position the bar"
  1718.     DATA "over your choices and press [Enter].  When you have made all of"
  1719.     DATA "your choices, press [Esc] again and I will turn on any keys that"
  1720.     DATA "you selected."
  1721.     DATA "EOM"
  1722.     DATA 5
  1723.     DATA "Insert"
  1724.     DATA "Caps Lock"
  1725.     DATA "Num Lock"
  1726.     DATA "Scroll Lock"
  1727.     DATA "EOM"
  1728.  
  1729. BsKTogH.Msg:
  1730.     DATA 13
  1731.     DATA "BsKTogH will tell you if the toggle keys are pressed.  The",1,1,0,0
  1732.     DATA "keys that it monitors are:",2,1,0,0
  1733.     DATA "                  [Insert]",3,1,0,0
  1734.     DATA "                  [Caps Lock]",4,1,0,0
  1735.     DATA "                  [Num Lock]",5,1,0,0
  1736.     DATA "                  [Scroll Lock]",6,1,0,0
  1737.     DATA " ",7,1,0,0
  1738.     DATA "This service differs from BsKStat because it tells you",8,1,0,0
  1739.     DATA "if someone is physically holding one of these keys down.",9,1,0,0
  1740.     DATA "Press any of them now and I'll show you what's being",10,1,0,0
  1741.     DATA "detected.  Press [Esc] when you're done.",11,1,0,0
  1742.     DATA "EOM"
  1743.  
  1744. BsVMode.Msg:
  1745.     DATA 20
  1746.     DATA "BsVMode will get or set the video mode currently in use."
  1747.     DATA "This function has limited application because it makes"
  1748.     DATA "your program hardware independent.  Not all cards support"
  1749.     DATA "all video modes.  For example, if you have a monochrome"
  1750.     DATA "monitor, mode 7 is the only one supported.  Download"
  1751.     DATA "QBWARE.ARC and review the documentation for more info on"
  1752.     DATA "Video modes."
  1753.     DATA "EOM"
  1754.  
  1755. BsVSCur.Msg:
  1756.     DATA 6
  1757.     DATA "BsVSCur allows to get or set the cursor size.  When using"
  1758.     DATA "this function, all video Input/Output should be done"
  1759.     DATA "without using Basic commands."
  1760.     DATA "EOM"
  1761.  
  1762. BsVsWid.Msg:
  1763.     DATA 3
  1764.     DATA "BsVsWid returns the width of the screen.  Right now we can",1,1,0,0
  1765.     DATA "display    characters across your screen.",2,1,0,0
  1766.     DATA "EOM"
  1767.  
  1768. BsVsPos.Msg:
  1769.     DATA 6
  1770.     DATA "BsVsPos allows you to get or set the current cursor position."
  1771.     DATA "As with BsVSCur, you should not use any Basic commands to"
  1772.     DATA "perform Input/Output to the monitor when using this service."
  1773.     DATA "EOM"
  1774.  
  1775. BsVsPag.Msg:
  1776.     DATA 20
  1777.     DATA "BsVPag will get or set the current video page in use."
  1778.     DATA "This function has limited application because it makes"
  1779.     DATA "your program hardware independent.  Not all cards support"
  1780.     DATA "the same number of pages.  For example, if you have a"
  1781.     DATA "MDA card, only page 1 is valid.  Download"
  1782.     DATA "QBWARE.ARC and review the documentation for more info on"
  1783.     DATA "Video pages."
  1784.     DATA "EOM"
  1785.  
  1786. BsVScrUp.Msg:
  1787.     DATA 6
  1788.     DATA "BsVScrUp allows you to scroll data on the monitor up"
  1789.     DATA "a fixed number of lines.  You can do this for the entire"
  1790.     DATA "screen or just a portion of it.  "
  1791.     DATA "EOM"
  1792.  
  1793. BsVScrDn.Msg:
  1794.     DATA 6
  1795.     DATA "BsVScrDn allows you to scroll data on the monitor down"
  1796.     DATA "a fixed number of lines.  You can do this for the entire"
  1797.     DATA "screen or just a portion of it.  "
  1798.     DATA "EOM"
  1799.  
  1800. BsVRChr.Msg:
  1801.     DATA 6
  1802.     DATA "BsVRChr will read a character from the video buffer.  You"
  1803.     DATA "specify the coordinates and this service will return the "
  1804.     DATA "character and it's attribute."
  1805.     DATA "EOM"
  1806.  
  1807. BsVWChr.Msg:
  1808.     DATA 6
  1809.     DATA "BsVWChr will write a character to the video buffer.  It bypasses"
  1810.     DATA "the normal DOS print routines and therefore is quicker than a"
  1811.     DATA "BASIC PRINT statement."
  1812.     DATA "EOM"
  1813.  
  1814. BsVWTTY.Msg:
  1815.     DATA 6
  1816.     DATA "BsVWTTY allows you to write to the screen in teletype mode.  This"
  1817.     DATA "service is useful for dumping ASCII files to the screen.  DOS"
  1818.     DATA "uses this service to write text to the screen."
  1819.     DATA "EOM"
  1820.  
  1821. Disk.Warning:
  1822.     DATA 20
  1823.     DATA ""
  1824.     DATA "            ******  WARNING  ******"
  1825.     DATA ""
  1826.     DATA ""
  1827.     DATA "This demo will work only with a disk in Drive A: and some"
  1828.     DATA "functions will destroy data on your disk.  Please use a "
  1829.     DATA "formatted disk that does not contain any data that you need."
  1830.     DATA ""
  1831.     DATA "        Press [Esc] to continue"
  1832.     DATA ""
  1833.     DATA ""
  1834.     DATA "            ******  WARNING  ******"
  1835.     DATA ""
  1836.     DATA "EOM"
  1837.  
  1838. BsDStat.Msg:
  1839.     DATA 6
  1840.     DATA "BsDStat allows you to retrieve the return code of the last"
  1841.     DATA "disk operation."
  1842.     DATA "EOM"
  1843.  
  1844. BsDReset.Msg:
  1845.     DATA 6
  1846.     DATA "BsDReset will simply reset the floppy disk controller.  This"
  1847.     DATA "flushes all data buffers."
  1848.     DATA "EOM"
  1849.  
  1850. BsDVrfy.Msg:
  1851.     DATA 6
  1852.     DATA "BsDVrfy will cause a specific sector to be read and insure"
  1853.     DATA "that the sector passes the CRC check."
  1854.     DATA "EOM"
  1855.  
  1856. BsDRead.Msg:
  1857.     DATA 6
  1858.     DATA "BsDRead will allow you to read a sector without going thru",1,1,0,0
  1859.     DATA "DOS.  If you press [Esc], I'll return to the menu - any ",2,1,0,0
  1860.     DATA "other key and I'll show you the boot record from Drive A.",3,1,0,0
  1861.     DATA "EOM"
  1862.  
  1863. BsDWrit.Msg:
  1864.     DATA 6
  1865.     DATA "BsDWrit will allow you to write a sector without going thru"
  1866.     DATA "DOS.  I won't actually write any sectors because this function,"
  1867.     DATA "if not used properly, can screw up a disk pretty quickly."
  1868.     DATA "EOM"
  1869.  
  1870. BsDFmt.Msg:
  1871.     DATA 6
  1872.     DATA "BsDFmt will format a track on a hard disk or diskette. Press",1,1,0,0
  1873.     DATA "[Esc] and I'll return you to the menu - any other key and I'll",2,1,0,0
  1874.     DATA "format track 39, head 1, of the diskette in drive A.",3,1,0,0
  1875.     DATA "EOM"
  1876.  
  1877. BsDAT.Msg:
  1878.     DATA 50
  1879.     DATA "The AT disk services were added to the AT's ROM-BIOS to provide"
  1880.     DATA "added function for hard disks and the 1.2Mb diskette drive."
  1881.     DATA "These functions are available only on an AT and therefore will"
  1882.     DATA "not be demonstrated here.  The services are:"
  1883.     DATA " "
  1884.     DATA "   BsDAPArm - This service returns the number of Sectors, Cylinders,"
  1885.     DATA "              and Heads on your hard drive."
  1886.     DATA " "
  1887.     DATA "   BsDATst  - This service will test for drive ready - hard disk only."
  1888.     DATA " "
  1889.     DATA "   BsDaRst  - This is the alternate disk reset service intended for hard"
  1890.     DATA "              disks only."
  1891.     DATA " "
  1892.     DATA "   BsDaRcl  - This service will Recalibrate your hard drive."
  1893.     DATA " "
  1894.     DATA "   BsDADiag - This service will cause your hard disk controller to execute"
  1895.     DATA "              its internal diagnostic routines."
  1896.     DATA " "
  1897.     DATA "   BsDaStat - This service detects if the diskette drive door has been opened"
  1898.     DATA "              since the last disk operation.  This service works only with"
  1899.     DATA "              most 1.2Mb diskette drives."
  1900.     DATA " "
  1901.     DATA "   BsDaType - This service tells you if the diskette drive is equipped"
  1902.     DATA "              with change detection circuitry."
  1903.     DATA " "
  1904.     DATA "   BsDASTyp - This service tells the diskette drive what kind of diskette"
  1905.     DATA "              is loaded into the drive.  It is used before all Format "
  1906.     DATA "              and Verify requests."
  1907.     DATA " "
  1908.     DATA "   BsDASeek - This service will cause the read/write heads to be "
  1909.     DATA "              positioned over a particular track.  It can be used to"
  1910.     DATA "              park your drive."
  1911.     DATA "EOM"
  1912.  
  1913.  
  1914.  
  1915.  
  1916. BsEqpmt.Msg:
  1917.     DATA 6
  1918.     DATA "The window displayed below shows the current equipment"
  1919.     DATA "configuration for this machine.  The number of hard disks"
  1920.     DATA "may not always be correct due to compatibility problems."
  1921.     DATA "Press [Esc] to return to the menu."
  1922.     DATA "EOM"
  1923.  
  1924. BsEqpmt.Txt:
  1925.     DATA 10
  1926.     DATA "ROM Revision Date           ",1,1,0,0
  1927.     DATA "Conventional Memory         ",2,1,0,0
  1928.     DATA "Extended Memory             ",3,1,0,0
  1929.     DATA "Expanded Memory             ",4,1,0,0
  1930.     DATA "Parallel Ports              ",5,1,0,0
  1931.     DATA "Serial Ports                ",6,1,0,0
  1932.     DATA "Floppy Drives               ",7,1,0,0
  1933.     DATA "Game Ports                  ",8,1,0,0
  1934.     DATA "Hard Disks                  ",9,1,0,0
  1935.     DATA "EOM"
  1936.  
  1937. BsPInit.Msg:
  1938.     DATA 6
  1939.     DATA "BsPInit will perform a printer initialization.  As this screen"
  1940.     DATA "was being displayed you should have heard your printer being"
  1941.     DATA "reset - assuming, of course, that your printer was on-line and"
  1942.     DATA "connected to LPT1."
  1943.     DATA "EOM"
  1944.  
  1945. BsPStat.Msg:
  1946.     DATA 5
  1947.     DATA "BsPStat will return the status of your printer.  At the bottom",1,1,0,0
  1948.     DATA "of this window, I'm displaying the status of LPT1.  You ",2,1,0,0
  1949.     DATA "can turn the printer on and off and see what it does to",3,1,0,0
  1950.     DATA "the display.  Press [Esc] when you're finished.",4,1,0,0
  1951.     DATA "EOM"
  1952.  
  1953. BsPrint.Msg:
  1954.     DATA 6
  1955.     DATA "BsPrint sends a string of characters to a printer."
  1956.     DATA "EOM"
  1957.  
  1958. BsPrtSc.Msg:
  1959.     DATA 6
  1960.     DATA "This service simulates pressing the [PrtSc] key. Press",1,1,0,0
  1961.     DATA "[Esc] and we'll go back to the menu without printing.  Any",2,1,0,0
  1962.     DATA "other key and I'll print this screen before going back to ",3,1,0,0
  1963.     DATA "the menu.",4,1,0,0
  1964.     DATA "EOM"
  1965.  
  1966. DosPStat.Msg:
  1967.     DATA 7
  1968.     DATA "DosPStat reports the status of the print spooler.",1,1,0,0
  1969.     DATA "The current status of the spooler is shown below",2,1,0,0
  1970.     DATA " ",3,1,0,0
  1971.     DATA "    Press any key to continue",4,1,0,0
  1972.     DATA "EOM"
  1973.  
  1974. DosPCan.Msg:
  1975.     DATA 6
  1976.     DATA "DosPCan will cancel all jobs currently in the print queue.",1,1,0,0
  1977.     DATA "If you press [Esc], I will not cancel any jobs - any other",2,1,0,0
  1978.     DATA "key and I'll cancel all of them.",3,1,0,0
  1979.     DATA "EOM"
  1980.  
  1981. DosPDel.Msg:
  1982.     DATA 6
  1983.     DATA "DosPDel will remove a file from the queue.  Press [Esc] and"
  1984.     DATA "I'll display a list of files currently in the queue.  To delete a"
  1985.     DATA "file, just move the bar over the filename and press [Enter]."
  1986.     DATA "When you have marked all files to delete, press [Esc]."
  1987.     DATA "EOM"
  1988.  
  1989. DosPLst.Msg:
  1990.     DATA 6
  1991.     DATA "DosPLst will show all of the files currently in the print queue.",1,1,0,0
  1992.     DATA "Press any key and I'll display them.",2,1,0,0
  1993.     DATA "EOM"
  1994.  
  1995. DosPSub.Msg:
  1996.     DATA 6
  1997.     DATA "DosPSub will submit a file to the spooler.  Enter a file name",1,1,0,0
  1998.     DATA "and I'll submit it to the spooler for you.  Remember, you ",2,1,0,0
  1999.     DATA "enter the entire file name including drive and path.",3,1,0,0
  2000.     DATA "EOM"
  2001.  
  2002. FlFile.Msg:
  2003.     DATA 20
  2004.     DATA "This section of the demo contains only descriptive information."
  2005.     DATA "The file QBWARE.ARC, available through either Genie or CompuServe,"
  2006.     DATA "contains many samples using these routines.  Source code for the"
  2007.     DATA "DEMO programs is provided to better understand how these services"
  2008.     DATA "work."
  2009.     DATA " "
  2010.     DATA "  Press [Esc] to continue."
  2011.     DATA "EOM"
  2012.  
  2013. FlGTim.Msg:
  2014.     DATA 6
  2015.     DATA "FlGTim allows you to retrieve the DOS timestamp for any file."
  2016.     DATA "EOM"
  2017.  
  2018. FlGDat.Msg:
  2019.     DATA 6
  2020.     DATA "FlGDat allows you to retrieve a file's date of last update."
  2021.     DATA "EOM"
  2022.  
  2023. FlGVol.Msg:
  2024.     DATA 6
  2025.     DATA "FlGVol allows you to retrieve the volume name for any diskette"
  2026.     DATA "or hard disk."
  2027.     DATA "EOM"
  2028.  
  2029. FlPDat.Msg:
  2030.     DATA 6
  2031.     DATA "FlPDat allows you to change a file's date and time stamp."
  2032.     DATA "For a demonstration of this program, download the file"
  2033.     DATA "QBWARE.ARC from GENIE or CompuServe.  The program FTIME.BAS"
  2034.     DATA "is a working program showing how to update all files in"
  2035.     DATA "a directory."
  2036.     DATA "EOM"
  2037.  
  2038. FlPVol.Msg:
  2039.     DATA 6
  2040.     DATA "FlPVol allows you to change the volume name on any diskette"
  2041.     DATA "or hard disk."
  2042.     DATA "EOM"
  2043.  
  2044. FlAttr.Msg:
  2045.     DATA 6
  2046.     DATA "FlAttr allows you to retrieve or set any file's attributes."
  2047.     DATA "EOM"
  2048.  
  2049. FlOpen.Msg:
  2050.     DATA 6
  2051.     DATA "FlOpen allows you to open a file.  You may specify the type of"
  2052.     DATA "access (i.e. read only, write only, etc.).  For DOS 3.XX or"
  2053.     DATA "higher, you can specify sharing mode for multitasking"
  2054.     DATA "environments."
  2055.     DATA "EOM"
  2056.  
  2057. FlClos.Msg:
  2058.     DATA 6
  2059.     DATA "FlClos simply closes a file that was opened using FlOpen."
  2060.     DATA "EOM"
  2061.  
  2062. FlRead.Msg:
  2063.     DATA 6
  2064.     DATA "FlRead allows you to read a record from a file opened using"
  2065.     DATA "FlOpen."
  2066.     DATA "EOM"
  2067.  
  2068. FlWrit.Msg:
  2069.     DATA 6
  2070.     DATA "FlWrit allows you to write a record to a file opened using"
  2071.     DATA "FlOpen."
  2072.     DATA "EOM"
  2073.  
  2074. FlPoint.Msg:
  2075.     DATA 6
  2076.     DATA "FlPoint allows you to move the current record pointer in a file"
  2077.     DATA "opened using FlOpen.  This facilitates random processing."
  2078.     DATA "EOM"
  2079.  
  2080. FlCreat.Msg:
  2081.     DATA 20
  2082.     DATA "FlCreat allows you to create a file.  Several options are"
  2083.     DATA "supported - including:"
  2084.     DATA " "
  2085.     DATA "    - Create a file if the file name is not in use and if it"
  2086.     DATA "      is in use, truncate (This is the QB default for OPEN)."
  2087.     DATA " "
  2088.     DATA "    - Create a file if the file name is not in use and if it"
  2089.     DATA "      is in use do nothing and provide a 'File already exists'"
  2090.     DATA "      return code to the calling program"
  2091.     DATA " "
  2092.     DATA "    - Create a file with a unique filename."
  2093.     DATA "EOM"
  2094.  
  2095. FlDelete.Msg:
  2096.     DATA 6
  2097.     DATA "FlDelete deletes a file."
  2098.     DATA "EOM"
  2099.  
  2100. FlRSect.Msg:
  2101.     DATA 6
  2102.     DATA "FlRSect reads an absolute sector from a diskette or hard disk."
  2103.     DATA "It is similar in function to BsDRead - the BIOS sector read,"
  2104.     DATA "however, internally, they are different."
  2105.     DATA "EOM"
  2106.  
  2107. FlWSect.Msg:
  2108.     DATA 6
  2109.     DATA "FlWSect writes an absolute sector from a diskette or hard disk."
  2110.     DATA "It is similar in function to BsDWrit - the BIOS sector write,"
  2111.     DATA "however, internally, they are different."
  2112.     DATA "EOM"
  2113.  
  2114. FlFind.Msg:
  2115.     DATA 6
  2116.     DATA "FlFind searches the current directory for a file.  You provide"
  2117.     DATA "the FileSpec and this program returns an array of matches."
  2118.     DATA "DOS Wildcards can be used."
  2119.     DATA "EOM"
  2120.  
  2121. FlCnt.Msg:
  2122.     DATA 6
  2123.     DATA "FlCnt can be used with FlFind.  It returns the number of"
  2124.     DATA "files matching a FileSpec.  Use this service before callind FlFind"
  2125.     DATA "so you can properly dimension the array used by FlFind."
  2126.     DATA "EOM"
  2127.  
  2128. FlMove.Msg:
  2129.     DATA 6
  2130.     DATA "FlMove will move a file from one directory to another."
  2131.     DATA "This service will not let you move a file from one drive"
  2132.     DATA " to another.  FlCopy must be used for that."
  2133.     DATA "EOM"
  2134.  
  2135. FlCopy.Msg:
  2136.     DATA 6
  2137.     DATA "FlCopy will copy a file.  It is similar in function to FlMove"
  2138.     DATA " but allows a file to be moved from one drive to another."
  2139.     DATA "EOM"
  2140.  
  2141. FlSDrv.Msg:
  2142.     DATA 6
  2143.     DATA "FlSDrv allows you to set the current Drive."
  2144.     DATA "EOM"
  2145.  
  2146. FlGDrv.Msg:
  2147.     DATA 6
  2148.     DATA "FlGDrv allows you to get the current Drive."
  2149.     DATA "EOM"
  2150.  
  2151. FlCDir.Msg:
  2152.     DATA 6
  2153.     DATA "FlCDir allows you to change the current directory."
  2154.     DATA "EOM"
  2155.  
  2156. FlGDir.Msg:
  2157.     DATA 6
  2158.     DATA "FlGDir allows you to get the current directory."
  2159.     DATA "EOM"
  2160.  
  2161. FlMDir.Msg:
  2162.     DATA 6
  2163.     DATA "FlMDir allows you to make a directory.  Of course, the directory"
  2164.     DATA "name cannot be already in use or this service will fail.
  2165.     DATA "EOM"
  2166.  
  2167. FlDDir.Msg:
  2168.     DATA 6
  2169.     DATA "FlDDir allows you to delete a directory.  The directory must"
  2170.     DATA "exist and be empty for this service to succeed."
  2171.     DATA "EOM"
  2172.  
  2173. FlDStat.Msg:
  2174.     DATA 20
  2175.     DATA "FlDStat will provide you with various statistics about a diskette"
  2176.     DATA "or hard disk.  Data retrieved is:"
  2177.     DATA " "
  2178.     DATA "      Type of Drive"
  2179.     DATA "      Bytes per sector"
  2180.     DATA "      Sectors per cluster"
  2181.     DATA "      Available clusters"
  2182.     DATA "      Total Clusters"
  2183.     DATA " "
  2184.     DATA "Using this informatiuon, we can determine if we're using an"
  2185.     DATA "8 or 9 sector diskette, whether it's Single-Sided or Double-Sided,"
  2186.     DATA "if it's a hard disk, the amount of free space left on the disk "
  2187.     DATA "and more."
  2188.     DATA "EOM"
  2189.  
  2190.  
  2191.  
  2192. DosAllcT.Msg:
  2193.     DATA 20
  2194.     DATA "This section of the demo contains only descriptive information."
  2195.     DATA "The file QBWARE.ARC, available through either Genie or CompuServe,"
  2196.     DATA "contains many samples using these routines.  Source code for the"
  2197.     DATA "DEMO programs is provided to better understand how these services"
  2198.     DATA "work."
  2199.     DATA " "
  2200.     DATA "  Press [Esc] to continue."
  2201.     DATA "EOM"
  2202. DosMAllc.Msg:
  2203.     DATA 6
  2204.     DATA "DosMAllc will allocate up to 64K of additional string space"
  2205.     DATA "that can be used with the other functions explained in this section."
  2206.     DATA "EOM"
  2207. DosMFree.Msg:
  2208.     DATA 6
  2209.     DATA "DosMFree will free the space acquired by DosMAllc."
  2210.     DATA "EOM"
  2211. DosMGet.Msg:
  2212.     DATA 6
  2213.     DATA "DosMGet will retrieve a record from the area allocated by"
  2214.     DATA "DosMAllc.  This record must have been placed there by "
  2215.     DATA "DosMPut."
  2216.     DATA "EOM"
  2217. DosMPut.Msg:
  2218.     DATA 6
  2219.     DATA "DosMPut will place data into the area allocated by DosMAllc."
  2220.     DATA "This data can subsequently retrieved by DosMGet."
  2221.     DATA "EOM"
  2222. Boot.Msg:
  2223.     DATA 6
  2224.     DATA "Boot does just what it says.  It causes either a warm or cold boot"
  2225.     DATA "of the system."
  2226.     DATA "EOM"
  2227. DosChOut.Msg:
  2228.     DATA 6
  2229.     DATA "DosChOut will write a string to the standard output device."
  2230.     DATA "It is designed primarily for video output, however, in can "
  2231.     DATA "be redirected easily."
  2232.     DATA "EOM"
  2233. DosChrIn.Msg:
  2234.     DATA 6
  2235.     DATA "DosChrIn will read a character from the standard input device."
  2236.     DATA "It can optionally echo the charcater onto the standard output"
  2237.     DATA "device.  This service was designed to work with a keyboard"
  2238.     DATA "and video monitor, however, they can both be redirected."
  2239.     DATA "EOM"
  2240. DosStrIn.Msg:
  2241.     DATA 6
  2242.     DATA "DosStrIn will read a string from the standard input device."
  2243.     DATA "Anything read will automatically echo onto the standard"
  2244.     DATA "output device.  This function can be redirected."
  2245.     DATA "EOM"
  2246. DosRed.Msg:
  2247.     DATA 6
  2248.     DATA "DosRed allows you to close one of the DOS standard handles"
  2249.     DATA "or redirect it from within your program."
  2250.     DATA "EOM"
  2251. DosPrSc.Msg:
  2252.     DATA 6
  2253.     DATA "DosPrSc will cause the contents of the video buffer to be"
  2254.     DATA "sent to LPT1."
  2255.     DATA "EOM"
  2256. DosVer.Msg:
  2257.     DATA 6
  2258.     DATA "DosVer will provide the DOS version that we're running under."
  2259.     DATA "EOM"
  2260. DosVrfy.Msg:
  2261.     DATA 6
  2262.     DATA "BsDVrfy will turn verify mode on or off.  Turning verify mode"
  2263.     DATA "on will cause the DOS to read a sector after a write is "
  2264.     DATA "performed.  This ensures that each sector written will pass"
  2265.     DATA "the CRC check."
  2266.     DATA "EOM"
  2267.  
  2268. StrFunc.Msg:
  2269.     DATA 50
  2270.     DATA "There are several string functions that allow to enhance"
  2271.     DATA "the string handling capabilities of BASIC.  These are:"
  2272.     DATA " "
  2273.     DATA "     Verify - Opposite of INSTR, it allows you to find"
  2274.     DATA "              the first character in a string that is not"
  2275.     DATA "              contained in the control string.  Makes testing"
  2276.     DATA "              a string for numerics simple and fast and allows"
  2277.     DATA "              you to quickly find the first non-blank character"
  2278.     DATA "              in a string - unlimited uses."
  2279.     DATA " "
  2280.     DATA "    XVerify - This service is the same as Verify except that it"
  2281.     DATA "              finds the last character."
  2282.     DATA " "
  2283.     DATA "   CharXlat - This service emulates the Assembler XLAT instruction."
  2284.     DATA " "
  2285.     DATA "   Translat - This service allows you to replace a given character"
  2286.     DATA "              in a string with another."
  2287.     DATA ""
  2288.     DATA "   Compress - Will eliminate leading and trailing blanks."
  2289.     DATA ""
  2290.     DATA "   UpCase   - Changes each character of the string to upper"
  2291.     DATA "              case."
  2292.     DATA ""
  2293.     DATA "   LoCase   - Changes each character of the string to lower"
  2294.     DATA "              case."
  2295.     DATA ""
  2296.     DATA "   Proper   - Changes a string to proper form - for example"
  2297.     DATA "              JOHN D. SMITH would be changed to"
  2298.     DATA "              John D. Smith."
  2299.     DATA ""
  2300.     DATA "   HexStr   - This service provides a displayable hexadecimal"
  2301.     DATA "              representation of a string.  This service is"
  2302.     DATA "              demonstrated under BsDRead in the BIOS Disk"
  2303.     DATA "              section of this demo."
  2304.     DATA ""
  2305.     'DATA "   Format   - this service takes a number in any format and"
  2306.     'DATA "              converts it to a formatted string similar to "
  2307.     'DATA "              PRINT USING."
  2308.     DATA "EOM"
  2309.  
  2310. SortFunc.Msg:
  2311.     DATA 20
  2312.     DATA "PESort is a sort routine - written in BASIC - that uses a"
  2313.     DATA "partition-exchange sort to sort arrays in memory.  The"
  2314.     DATA "array can be sorted using the entire length of each member"
  2315.     DATA "of the array or any portion of it."
  2316.     DATA " "
  2317.     DATA "The partition-exchange gives excellent results for medium to"
  2318.     DATA "large arrays."
  2319.     DATA "EOM"
  2320.  
  2321. DateFunc.Msg:
  2322.     DATA 50
  2323.     DATA "The date and time handling functions available provide a wide"
  2324.     DATA "variety of methods to display and manipulate dates.  They are:"
  2325.     DATA ""
  2326.     DATA "      DatePack - This service packs a date into a two-byte"
  2327.     DATA "                 field."
  2328.     DATA " "
  2329.     DATA "      DateUnPk - Unpacks a date packed with DatePack."
  2330.     DATA " "
  2331.     DATA "      GregTJul - Converts a Gregorian date to Julian date."
  2332.     DATA "                 Gregorian date has the format MM/DD/YY and"
  2333.     DATA "                 Julian date has the format YYDDD.  Julian"
  2334.     DATA "                 date are better suited for arithmetic manipulations"
  2335.     DATA "                 and sorting."
  2336.     DATA " "
  2337.     DATA "      JulTGreg - Converts a Julian date to Gregorian."
  2338.     DATA " "
  2339.     DATA "      DaysDiff - Computes the difference, in days, between two dates."
  2340.     DATA " "
  2341.     DATA "      WeekDay  - Takes a date and tells you the day of the week."
  2342.     DATA ""
  2343.     DATA "      Calendar - Displays a calendar on any part of the screen."
  2344.     DATA " "
  2345.     DATA "      AddTime  - Adds two times with the format HH:MM:SS together."
  2346.     DATA " "
  2347.     DATA "      SubTime  - Subtracts two times."
  2348.     DATA " "
  2349.     DATA "      Time     - These routines when used together can provide"
  2350.     DATA "      Ticks      complete timer services.  Lapse time in seconds"
  2351.     DATA "      BsGeTime   or standard HH:MM:SS format can be provided with"
  2352.     DATA "                 accuracy to 1/18 of a second."
  2353.     DATA "EOM"
  2354.  
  2355. MiscFunc.Msg:
  2356.     DATA 6
  2357.     DATA "This area is reserved for those services that don't fit anywhere"
  2358.     DATA "else.  These are:"
  2359.     DATA ""
  2360.     DATA "      Mod      - Provide modulus for numbers greater than 32,767."
  2361.     DATA " "
  2362.     DATA "EOM"
  2363.  
  2364. WinPrim.Msg:
  2365.     DATA 50
  2366.     DATA "These are the base functions for the windowing routines.  They"
  2367.     DATA "provide the foundation for the rest of the modules."
  2368.     DATA ""
  2369.     DATA "  PutLine  - This program writes data to the video buffer.  It allows"
  2370.     DATA "             you to select one of three methods to write to the screen."
  2371.     DATA "             either thru BIOS, directly to the video buffer, or"
  2372.     DATA "             directly to the video buffer while waiting for"
  2373.     DATA "             retrace.  This allows maximum compatibility across"
  2374.     DATA "             a variety of machines."
  2375.     DATA " "
  2376.     DATA "  SaveScr   - These routines allow you to save and restore sections"
  2377.     DATA "  RestScr     of the video buffer into a numeric array.  They are "
  2378.     DATA "              are designed to use dynamic arrays, thereby causing"
  2379.     DATA "              little impact on total available string space."
  2380.     DATA " "
  2381.     DATA "  InpWin    - This routine accepts a character from the keyboard."
  2382.     DATA "              and allows an automatic display of the status bar"
  2383.     DATA "              at the bottom of your screen."
  2384.     DATA " "
  2385.     DATA "  ColorLin  - This routine allows you to color a line of text"
  2386.     DATA "              without changing any of the text."
  2387.     DATA "EOM"
  2388.  
  2389. WinHigh.Msg:
  2390.     DATA 50
  2391.     DATA "This window explains the higher level display window functions."
  2392.     DATA "They are:"
  2393.     DATA " "
  2394.     DATA "  PutWind  - Display a window on a section of the screen.  This"
  2395.     DATA "             service allows several options, including, single or"
  2396.     DATA "             double line frames, shadows to provide a three-D"
  2397.     DATA "             appearance, exploding windows, etc."
  2398.     DATA " "
  2399.     DATA " PushWin    - These routines automatically save and restore sections"
  2400.     DATA " PopWin       of the screen to an integer array."
  2401.     DATA " "
  2402.     DATA " InitWin    - Initialize parameters defining the windowing environment."
  2403.     DATA " "
  2404.     DATA " DefWin     - Define each window used."
  2405.     DATA " "
  2406.     DATA " CngWin     - Change an indiviual window's definition."
  2407.     DATA " "
  2408.     DATA " MoveWin    - What else! - Move a window to a different part of the"
  2409.     DATA "              screen."
  2410.     DATA " "
  2411.     DATA " PopText    - This service allows you to display a text array"
  2412.     DATA "              of any size and display it in a window of any size."
  2413.     DATA "              The window you a currently reading was created with"
  2414.     DATA "              PopText.  Note that all of the Arrow keys, [PgUp],"
  2415.     DATA "              [PgDn], [Home], [End] and Tab keys allow you to"
  2416.     DATA "              browse thru the window."
  2417.     DATA " "
  2418.     DATA " PopFText    - This service takes a text array and places each"
  2419.     DATA "               member of the array in a predefined location of the"
  2420.     DATA "               window.  All locations are defined relative to the"
  2421.     DATA "               upper left corner of the window, so you can move the"
  2422.     DATA "               window anywhere on the screen without affecting the"
  2423.     DATA "               placement of the individual fields."
  2424.     DATA " "
  2425.     DATA "  ColorWin  - This routine allows you to color a window without"
  2426.     DATA "              changing any of the text inside the window."
  2427.     DATA "EOM"
  2428.  
  2429. WinInput.Msg:
  2430.     DATA 50
  2431.     DATA "These are the Input routines.  All of the character input routines"
  2432.     DATA "operate in a similar manner.  Several keys control cursor movement"
  2433.     DATA "for these routines.  These are:"
  2434.     DATA " "
  2435.     DATA "          [Home]    -  cursor to start of field"
  2436.     DATA "          [End]     -  cursor to end of field"
  2437.     DATA "          [UpArrow] -  exit field"
  2438.     DATA "          [DnArrow] -  exit field"
  2439.     DATA "          [RArrow]  -  cursor right"
  2440.     DATA "          [LArrow]  -  cursor left"
  2441.     DATA "          [BkSpace] -  cursor left and destroy character"
  2442.     DATA "          [Del]     -  delete the character at cursor and move"
  2443.     DATA "                       any characters right of the cursor 1 space"
  2444.     DATA "                       left."
  2445.     DATA "          [Ins]     -  Toggle insert mode"
  2446.     DATA " "
  2447.     DATA "The routines themselves are:"
  2448.     DATA " "
  2449.     DATA " InChar   - Input a string of characters.  You can specify an"
  2450.     DATA "            initial value and an input format (for example - "
  2451.     DATA "            a format of 999-99-9999 could be used for social"
  2452.     DATA "            security numbers the dashes would be displayed in"
  2453.     DATA "            the correct places and the cursor would jump over"
  2454.     DATA "            them - only numeric input would be accepted.)"
  2455.     DATA "            This service also provides automatic translation"
  2456.     DATA "            to upper or lower case and you can require only numeric"
  2457.     DATA "            input to be accepted.  These edits are performed on a"
  2458.     DATA "            character-by-character basis, allowing maximum flexibility."
  2459.     DATA " "
  2460.     DATA " InDate   - Accepts and edits a date."
  2461.     DATA " "
  2462.     DATA " InYes    - Accepts and edits a Yes/No field"
  2463.     DATA " "
  2464.     DATA " InMF     - Accepts and edits a Male/Female field"
  2465.     'DATA " "
  2466.     'DATA " InNum    - Accepts and edits a numeric field.  You can define the decimal"
  2467.     'DATA "            point anywhere within the field."
  2468.     DATA "EOM"
  2469.  
  2470. WinMenus.Msg:
  2471.     DATA 50
  2472.     DATA "There are five types of menus available.  Most of them have already"
  2473.     DATA "been demonstrated in this program.  Many of the cursor control keys"
  2474.     DATA "function with the menus.  This is a general description of bar control:"
  2475.     DATA " "
  2476.     DATA "          [Home]    -  generally moves the bar to the first menu selection"
  2477.     DATA "          [End]     -  generally moves the bar to the last menu selection"
  2478.     DATA "          [DnArrow] -  moves the bar down one item - it wraps at the bottom"
  2479.     DATA "                       of the menu"
  2480.     DATA "          [UpArrow] -  moves the bar up one item - it wraps at the top of"
  2481.     DATA "                       the menu"
  2482.     DATA "          [RArrow]  -  same as [DnArrow]"
  2483.     DATA "          [LArrow]  -  same as [UpArrow]"
  2484.     DATA "          [Enter]   -  selects the item with the bar over it"
  2485.     DATA "          [Esc]     -  leave the menu (except with pulldown menus)"
  2486.     DATA "          A-Z       -  pressing a letter will cause the bar to move to the"
  2487.     DATA "                       NEXT item that starts with that letter."
  2488.     DATA "          [PgUp]    -  move up one page (ScrlSlct only)"
  2489.     DATA "          [PgDn]    -  move down one page (ScrlSlct only)"
  2490.     DATA " "
  2491.     DATA "The menu programs are:"
  2492.     DATA " "
  2493.     DATA " BarMenu  - Provides a two-line bar menu.  This type of menu is not"
  2494.     DATA "            demonstrated in this program.  It is suited for menus with"
  2495.     DATA "            twelve-sixteen selections of short named items."
  2496.     DATA " "
  2497.     DATA " BarMenu1  - This is shown in the demo.  It is the menu that appears"
  2498.     DATA "             after you select the Disk routines under Bios in the"
  2499.     DATA "             Pull-Down menu.  "
  2500.     DATA " "
  2501.     DATA " BarMenu2  - This service provides a Lotus-like menu facility."
  2502.     DATA "             Lotus is, of course, a trademark of Lotus Corp."
  2503.     DATA " "
  2504.     DATA " PullDown  - This provides the pulldown menu at the top of this"
  2505.     DATA "             screen.  You used it to get here."
  2506.     DATA " "
  2507.     DATA " ScrlSlct  - This is the most powerful of the menus.  It will"
  2508.     DATA "             accept an array of any size and allow you to select"
  2509.     DATA "             any number of entries from it.  It has extensive"
  2510.     DATA "             cursor(or bar) control facilities to make it easy"
  2511.     DATA "             to get to any page within the menu."
  2512.     DATA "EOM"
  2513.  
  2514. AvailMsg:
  2515.     DATA 50
  2516.     DATA "I have tried to provide a detailed description of each service"
  2517.     DATA "in the windows that follow.  Many of the services described here"
  2518.     DATA "have been demonstrated in this program - especially the windowing"
  2519.     DATA "routines."
  2520.     DATA " "
  2521.     DATA "As with our other products, we will continue to enhance and support"
  2522.     DATA "these routines for our registered owners.  At this time, the"
  2523.     DATA "documentation for the windowing and miscellaneous routines are"
  2524.     DATA "not included in the shareware package."
  2525.     DATA " "
  2526.     DATA "These routines may be ordered directly from AJM Software.  Please"
  2527.     DATA "see the file REGISTER.TXT for details."
  2528.     DATA " "
  2529.     DATA "Many of the window and miscellaneous function routines are"
  2530.     DATA "written in QuickBasic."
  2531.     DATA "EOM"
  2532.  
  2533. ' These are the menu choices.  The first item appears on the bar and the items
  2534. ' below appear on the pulldown menu.  Each column must have EXACTLY the same
  2535. ' number of entries.
  2536.  
  2537. MainMenu.Data:
  2538.     DATA "Bios",          "File",            "Dos",           "Func",             "Window",               "Quit"
  2539.     DATA "KeyBoard",      "File Attribute",  "The Spooler",   "String Functions", "Primitives",           ""
  2540.     DATA "Video",         "File Access",     "Memory Mgmt",   "Sort",             "High Level Functions", ""
  2541.     DATA "Disk",          "DOS Replacement", "Miscellaneous", "Date and Time",    "Input Operations",     ""
  2542.     DATA "Miscellaneous", "",                "",              "Miscellaneous",    "Menu Types",           ""
  2543.  
  2544.     END
  2545.  
  2546.